00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00038
00039 #include <pqxx-object/update_query.h>
00040
00041 using namespace pqxxobject;
00042
00043 update_query::update_query():
00044 pqxxobject::query(),
00045 m_table_name(),
00046 m_field_list(),
00047 m_where()
00048 {
00049 }
00050
00051 update_query::update_query(const std::string& table):
00052 pqxxobject::query(),
00053 m_table_name(table),
00054 m_field_list(),
00055 m_where()
00056 {
00057 }
00058
00059 update_query::update_query(const update_query& rhs):
00060 pqxxobject::query(*this),
00061 m_table_name(rhs.m_table_name),
00062 m_field_list(rhs.m_field_list),
00063 m_where(rhs.m_where)
00064 {
00065 }
00066
00067 update_query::~update_query()
00068 {
00069 }
00070
00071 void
00072 update_query::remove(const pqxxobject::field_base& field)
00073 {
00074 for (std::list<field_value>::iterator iter = m_field_list.begin();
00075 iter != m_field_list.end();
00076 ++iter)
00077 {
00078 if (iter->first == field.get_column_name())
00079 {
00080 iter = m_field_list.erase(iter);
00081 }
00082 }
00083 }
00084
00085 std::string update_query::str()
00086 {
00087
00088 m_string.str("");
00089
00090 if (m_field_list.size() > 0)
00091 {
00092 m_string << "UPDATE " << m_table_name << " SET ";
00093 for (std::list<field_value>::const_iterator iter = m_field_list.begin();
00094 iter != m_field_list.end();
00095 ++iter)
00096 {
00097 if (iter != m_field_list.begin())
00098 m_string << ", ";
00099 m_string << iter->first << " = " << m_string << iter->second;
00100 }
00101 if (m_where.length())
00102 m_string << " WHERE (" << m_where << ')';
00103 }
00104 return m_string.str();
00105 }