VC++中带参数的update语句错误
在VC里用ODBC API去update 数据库里的值,环境是:
VC++ 6.0 ODBC API3.0 SqlServer 2000
我的问题是不会写带like参数的update语句,具体如下:
rc=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
if(rc==SQL_SUCCESS||rc==SQL_SUCCESS_WITH_INFO)
{
rc=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,0);
if(rc==SQL_SUCCESS||rc==SQL_SUCCESS_WITH_INFO)
{
rc=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
if(rc==SQL_SUCCESS||rc==SQL_SUCCESS_WITH_INFO)
{
rc=SQLConnect(hdbc,(SQLCHAR*)"istpnew",SQL_NTS,(SQLCHAR*)"istp",SQL_NTS,(SQLCHAR*)"istp123",SQL_NTS);
if(rc==SQL_SUCCESS||rc==SQL_SUCCESS_WITH_INFO)
{
SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
SQLSetStmtAttr(hstmt,SQL_ATTR_CURSOR_TYPE,(SQLCHAR*)SQL_CURSOR_DYNAMIC,SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt,SQL_ATTR_CONCURRENCY,(SQLCHAR*)SQL_CONCUR_LOCK,SQL_IS_UINTEGER);
SQLCHAR sQuery1[]="update test set ct=(?) where ct1 like %(?)%";
rc=SQLPrepare(hstmt,sQuery1,SQL_NTS);
if(rc==SQL_SUCCESS||rc==SQL_SUCCESS_WITH_INFO)
{
char cct[20]; char cct1[20];
SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,20,0,cct,sizeof(cct),0);
SQLBindParameter(hstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,20,0,cct1,sizeof(cct1),0);
strcpy(cct,(LPCSTR)ct.Left(20));
strcpy(cct1,(LPCSTR)ct1.Left(20));
rc=SQLExecute(hstmt);
if(rc==SQL_SUCCESS||rc==SQL_SUCCESS_WITH_INFO)
这里总得到rc=-1 我觉得是update语句写法不对,试了好几种都不正确。麻烦大家给个正确代码,谢谢,很着急!
我已经试过的好几种错误写法:
"update test set ct=? where ct1 like \''%' + ? + '%\''"
"update test set ct=? where ct1 like '%' + ? + '%'"
"update test set ct=? where ct1 like '%'?'%'"
"update test set ct=? where ct1 like '%?%'"