我是mysql ++的新用戶,正在尋找一些指針(雙關語)。mysql ++查詢失敗
問題:我的更新語句失敗。
連接已打開。之前使用連接的語句有效。
我確定我試圖更新的記錄存在。我可以用mysql查詢工具看到它。 我確定CustomerId是正確的。
// declaration of the customer id
uint32_t CustomerId;
這是爲什麼無法更新?
mysqlpp::Connection conn(true);
try
{
if (conn.connect(db_rw.Name, db_rw.Host, db_rw.User, db_rw.Password))
{
// *snip* insert code here works fine.
// this query fails
mysqlpp::Query query = conn.query("UPDATE customer SET AccountName=%2q, Active=%3, Password=%1 WHERE CustomerId=%0");
query.parse();
mysqlpp::SQLQueryParms parms;
parms.push_back(mysqlpp::sql_int(CustomerId));
parms.push_back(mysqlpp::sql_blob(data, sizeof(data))); //<- 16 byte binary blob
parms.push_back(mysqlpp::sql_varchar(widget.AccountName->text().toAscii().data())); // string
parms.push_back(mysqlpp::sql_bool(widget.ActiveCheckBox->checkState() == Qt::Checked ? 1 : 0)); //
mysqlpp::SimpleResult res = query.execute(parms);
}
}
如果我關閉了連接異常,它靜靜地失敗(在result.info()方法返回任何內容)。
如果我把想轉換爲字符串時,它異常賽格故障:
std::string Query::str(SQLQueryParms& p)
{
if (!parse_elems_.empty()) {
proc(p);
}
return sbuffer_.str();
}
該問題似乎是二進制的斑點。是否有一個ssqls修飾符來對二進制數據進行十六進制編碼? – Jay