我是为 ODBC 编写 c 代码的新手,但在这里我有疑问......在搜索了 C 的 odbc 函数教程的教程后,我仍然无法准确了解它们是如何协作工作的......
该语句处理 hstmt 对数据库数据到底做了什么?我知道它控制着我作为参数提供的 SQL 查询语句。但是,那么我作为查询提供的每个 SQL 语句都应该有每个语句句柄(hstmt)?还是多个 SQL 查询语句的一个语句句柄?
例如,
lstrcpy((LPTSTR)update, L"insert into employee values ('Dshong','summer','LosAngeles');");
SQLExecDirect(hstmt1, update, SQL_NTS);
lstrcpy((LPTSTR)update, L"insert into works values ('Dshong','Small Bank', 2500);");
SQLExecDirect(hstmt3, update1, SQL_NTS);
lstrcpy((LPTSTR)select, L"select * from works;");
if (SQLExecDirect(hstmt, select, SQL_NTS) != SQL_SUCCESS)
return printf("can’t exec direct");
lstrcpy((LPTSTR)select1, L"select * from employee;");
if (SQLExecDirect(hstmt2, select1, SQL_NTS) != SQL_SUCCESS)
return printf("can’t exec direct");
对于两个插入语句和两个带有四个 hstmt 的 select 语句,我应该这样给出吗?
如果我这样给予,
lstrcpy((LPTSTR)insert, L"insert into employee values ('Dshong','summer','LosAngeles');");
SQLExecDirect(hstmt1, insert, SQL_NTS);
SQLExecDirect 有 hstmt1 作为参数,但我不知道 SQLExecDirect 如何使用它。
而且我认为,结果应该是插入一行,不是吗?
但是当我运行代码时,它会插入多个相同的行('Dshong','summer','LosAngeles')
...当我打印出结果时,('Dshong','summer','LosAngeles')
即使插入行不在for循环中也被多次插入...
以及它们如何与以下功能一起工作?
SQLBindCol(hstmt, 1, SQL_C_CHAR, id, (SDWORD)sizeof(id), &idlen);
SQLFetch(hstmt)
我知道他们只是在做什么,但是.. 在这里我想确切地知道 hstmt(语句句柄)以哪种方式与他们一起工作..
谢谢你.. :)