数据库是mysql
想通过sql语句“lock table test write”编程实现锁表,运行程序后,在mysql控制台测试,发现并没有锁表,仍然能够update,不知是什么缘故,求高手指点~源码如下:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <CString>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <odbcss.h>
using namespace std;SQLHENV henv = 0;  
SQLHDBC hdbc = 0;   
SQLHSTMT hstmt = 0; int main()   

RETCODE retcode;    //signed short
SQLCHAR szKey[20]; //unsigned char
SQLINTEGER cbKey;//long
char szDSN[10] = "test_db"; //一个合法的DSN   Name   
char szUID[5] = "root"; //用户名
char szAuthStr[5] = "root"; //用户密码
retcode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);//申请环境句柄
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);//将ODBC设置成为版本3,否则某些ODBC API 函数不能被支持   
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); //申请数据库连接句柄 //连接
retcode = SQLConnect(hdbc, (SQLCHAR *)szDSN, (SWORD)strlen(szDSN),   
(SQLCHAR *)szUID, (SWORD)strlen(szUID),   
(SQLCHAR *)szAuthStr,(SWORD)strlen(szAuthStr));  if((retcode != SQL_SUCCESS)&&(retcode != SQL_SUCCESS_WITH_INFO))   
printf("Connection Error\n"); 
else 
printf("Connection Successfully\n");

SQLTCHAR sql[60]="lock table test write"; retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);//申请SQL语句句柄
retcode = SQLExecDirect(hstmt,sql,SQL_NTS);//执行Sql语句 if (retcode==SQL_SUCCESS)
{
cout<<"lock table success"<<endl;
}

else
cout<<"SQL_ERROR"<<endl;
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);//释放资源
SQLDisconnect(hdbc);//关闭连接
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);   
SQLFreeHandle(SQL_HANDLE_ENV, henv);   getchar();
return 0;   
}