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 <sstream>
00040
00041 #include <pqxxobject/update_query.h>
00042
00043 using namespace pqxxobject;
00044
00045 update_query::update_query():
00046 pqxxobject::query(),
00047 m_table_name(),
00048 m_field_list(),
00049 m_where()
00050 {
00051 }
00052
00053 update_query::update_query(const std::string& table):
00054 pqxxobject::query(),
00055 m_table_name(table),
00056 m_field_list(),
00057 m_where()
00058 {
00059 }
00060
00061 update_query::update_query(const update_query& rhs):
00062 pqxxobject::query(*this),
00063 m_table_name(rhs.m_table_name),
00064 m_field_list(rhs.m_field_list),
00065 m_where(rhs.m_where)
00066 {
00067 }
00068
00069 update_query::~update_query()
00070 {
00071 }
00072
00073 void
00074 update_query::remove(const pqxxobject::field_base& field)
00075 {
00076 for (std::list<field_value>::iterator iter = m_field_list.begin();
00077 iter != m_field_list.end();
00078 ++iter)
00079 {
00080 if (iter->first == field.get_column_name())
00081 {
00082 iter = m_field_list.erase(iter);
00083 }
00084 }
00085 }
00086
00087 #include <iostream>
00088
00089 std::string update_query::str() const
00090 {
00091
00092 std::ostringstream qs;
00093
00094 if (m_field_list.size() > 0)
00095 {
00096 qs << "UPDATE " << m_table_name << " SET ";
00097 for (std::list<field_value>::const_iterator iter = m_field_list.begin();
00098 iter != m_field_list.end();
00099 ++iter)
00100 {
00101 if (iter != m_field_list.begin())
00102 qs << ", ";
00103 qs << iter->first << " = " << iter->second;
00104 }
00105 if (m_where.length())
00106 qs << " WHERE (" << m_where << ')';
00107 }
00108 return qs.str();
00109 }