diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-12-07 14:26:09 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-12-07 14:26:09 +0000 |
commit | b58f541a17dcc3eadb0502275bc90412ed9115a7 (patch) | |
tree | db9175af481bc36eee961b9a7182e9a11dc58590 /libpqpp/command.cpp | |
parent | Improve connection failure detection (diff) | |
download | libdbpp-postgresql-b58f541a17dcc3eadb0502275bc90412ed9115a7.tar.bz2 libdbpp-postgresql-b58f541a17dcc3eadb0502275bc90412ed9115a7.tar.xz libdbpp-postgresql-b58f541a17dcc3eadb0502275bc90412ed9115a7.zip |
Merge select and modify command's SQL parser
Diffstat (limited to 'libpqpp/command.cpp')
-rw-r--r-- | libpqpp/command.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libpqpp/command.cpp b/libpqpp/command.cpp index ba12574..94079da 100644 --- a/libpqpp/command.cpp +++ b/libpqpp/command.cpp @@ -25,6 +25,27 @@ PQ::Command::~Command() } void +PQ::Command::prepareSql(std::string & psql, const std::string & sql) +{ + char buf[4]; + int p = 1; + bool inquote = false; + for(std::string::const_iterator i = sql.begin(); i != sql.end(); ++i) { + if (*i == '?' && !inquote) { + snprintf(buf, 4, "$%d", p++); + psql += buf; + } + else if (*i == '\'') { + inquote = !inquote; + psql += *i; + } + else { + psql += *i; + } + } +} + +void PQ::Command::paramsAtLeast(unsigned int n) { if (values.size() <= n) { |