C#access数据库查询返回值

C#access数据库查询返回值,第1张

int c=odc.ExecuteNonQuery()//这里出错了(这里适用的sql语句为 Update,InsertSelect是不适用的)

正确为:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6771460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存