私はODBC用のCコードを書くのは初めてですが、ここで質問があります...Cのodbc関数チュートリアルのチュートリアルを検索した後でも、それらがどのように連携して動作するかを正確に理解できません...
ステートメント ハンドル hstmt はデータベース データに対して正確に何をしますか? パラメータとして指定する SQL クエリ ステートメントを制御することはわかっていました。しかし、その後、クエリとして指定するすべての SQL ステートメントには、それぞれのステートメント ハンドル (hstmt) が必要ですか? それとも、複数の SQL クエリ ステートメントに対して 1 つのステートメント ハンドルですか?
例えば、
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 が 4 つの 2 つの insert ステートメントと 2 つの 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(ステートメントハンドル)がどのように機能するかを正確に知りたいです..
ありがとうございました.. :)