正确为:
int c=odc.ExecuteScalar()//
额。。写个个简单的样列,用的是ODBC,比较直接。使用ADO的话虽然代码少,但是看起来不是很好理解。你可以自己去百度学学~用到的函数都比较容易理解,我就没多加说明了,如果有不理解的复制函数名百度一下,会有详细的说明的。大概的流程就是这样了~
//包含头文件
#include "windows.h"
#include "sqlext.h"
#pragma comment(lib,"odbc32.lib")
int main(int argc, char* argv[]){
//1.连接数据源(前提是你已经配置好了数据源,我用的sqlserver数据库,怎么配数据源百度一下~很简单的)
//分配环境句柄, 保存一些驱动程序的信息
SQLHENV henv//环境句柄
SQLRETURN sqlRet
sqlRet = SQLAllocEnv(&henv)
if (sqlRet != SQL_SUCCESS &&sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("分配环境句柄失败!\n")
return -1
}
//分配连接句柄
SQLHDBC hdbc//连接句柄
sqlRet = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc)
if (sqlRet != SQL_SUCCESS &&sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("分配连接句柄失败!\n")
return -1
}
//连接数据源(test是数据库名字,sa 和sa 是用户们和密码,你替换即可)
sqlRet = SQLConnect(hdbc,(SQLCHAR*)"test",strlen("test"),(SQLCHAR*)"sa",2,(SQLCHAR*)"sa",2)
if (sqlRet != SQL_SUCCESS &&sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("连接数据源失败!\n")
return -1
}
//2.执行SQL语句
//准备语句句柄
SQLHSTMT hstmt
sqlRet = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt)
if (sqlRet != SQL_SUCCESS &&sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("连接语句句柄失败!\n")
return -1
}
//设置游标类型(参看:http://blog.csdn.net/bichenggui/article/details/5601381)
sqlRet = SQLSetStmtOption(hstmt,SQL_ATTR_CURSOR_TYPE,SQL_CURSOR_KEYSET_DRIVEN)
if (sqlRet != SQL_SUCCESS &&sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("设置光标类型失败!\n")
return -1
}
//执行SQL语句
//直接执行(你替换成你自己的sqlserver语句即可)
sqlRet = SQLExecDirect(hstmt,(SQLCHAR*)"insert into student values('lsk',21)",SQL_NTS)
if (sqlRet != SQL_SUCCESS &&sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("执行SQL语句失败!\n")
return -1
}
//获取结果集
SQLCHAR value[20]={0}
SQLINTEGER len = 0
//移动光标(不移动前光标指向结果集第一列的前面)
SQLFetch(hstmt)
//取值(取的是结果集的第一列的值),第二个参数表示取第几列
SQLGetData(hstmt,1,SQL_C_CHAR,value,20,&len)
printf("结果为:%s\n",value)
//假如结果集有多行则再次移动光标即可
SQLFetch(hstmt)
//然后再次取值
SQLGetData(hstmt,1,SQL_C_CHAR,value,20,&len)
//关闭句柄,释放资源
SQLFreeHandle(SQL_HANDLE_STMT, hstmt) //释放语句句柄
SQLDisconnect(hdbc) //断开连接
SQLFreeHandle(SQL_HANDLE_DBC, hdbc) //释放连接句柄
SQLFreeHandle(SQL_HANDLE_ENV, henv) //释放环境句柄
return 0
}
select count(*) from small where state='" + state + "'"这条语句执行出来就只有一条记录,就是你数据库中数据的条目,所以执行出来永远是1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)