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 #include <iostream>
00086
00087 std::string update_query::str()
00088 {
00089
00090 m_string.str("");
00091
00092 if (m_field_list.size() > 0)
00093 {
00094 m_string << "UPDATE " << m_table_name << " SET ";
00095 for (std::list<field_value>::const_iterator iter = m_field_list.begin();
00096 iter != m_field_list.end();
00097 ++iter)
00098 {
00099 if (iter != m_field_list.begin())
00100 m_string << ", ";
00101 m_string << iter->first << " = " << iter->second;
00102 }
00103 if (m_where.length())
00104 m_string << " WHERE (" << m_where << ')';
00105 }
00106 return m_string.str();
00107 }