通过ODBC API在准备好的语句中使用变量名 我有一个C++项目,它仍然使用级联SQL语句代替准备语句。据我所知,该项目使用的是普通ODBCAPI,没有任何第三方库

通过ODBC API在准备好的语句中使用变量名 我有一个C++项目,它仍然使用级联SQL语句代替准备语句。据我所知,该项目使用的是普通ODBCAPI,没有任何第三方库,c++,odbc,prepared-statement,C++,Odbc,Prepared Statement,现在我必须把这个项目转换成准备好的报表 从Delphi使用统一的Interbase UIB,我习惯于编写类似 Query.SQL.Text := 'INSERT INTO test (id, name) VALUES (:id, :name);' Query.Params.ByNameAsInteger['id'] := 42; Query.Params.ByNameAsString['name'] := 'Panic'; ... 即使使用ODBC数据源,Qt中似乎也有类似的名称绑定,至少根据

现在我必须把这个项目转换成准备好的报表

从Delphi使用统一的Interbase UIB,我习惯于编写类似

Query.SQL.Text := 'INSERT INTO test (id, name) VALUES (:id, :name);'
Query.Params.ByNameAsInteger['id'] := 42;
Query.Params.ByNameAsString['name'] := 'Panic';
...
即使使用ODBC数据源,Qt中似乎也有类似的名称绑定,至少根据我刚刚找到的教程

根据,我似乎必须使用SQLPrepare,只使用引号作为占位符和SQLBindParameter。对于SQLBindParameter,我必须指定比使用UIB或qt时更多的信息

// excerpt from MSDN example
SQLPrepare(hstmt, "UPDATE Parts SET Price = ? WHERE PartID = ?", SQL_NTS);
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_REAL, 7, 0,
                 &Price, 0, &PriceInd);
使用普通ODBC API时,我是缺少了一个部分,还是太复杂了?

好吧,它看起来让这更简单,可读性更好。