C语言ODBC操作数据库遇到的一些问题

问题一:连接失败

我成功装了SQLSERVER2008,并且成功配置数据源,测试也成功了。但是在vs2013中用代码连接数据库时,SQLConnect始终返回-1 ,百思不得其解,最后在网上查阅资料后终于发现了

解决办法:

通过ODBC编程时,不要用UNICODE字符集,具体操作为:项目属性(最后一个)--配置属性--常规--项目默认值--字符集将使用Unicode字符集改为未设置即可
。这时候下边这句代码就不会报错,不然会一直提示你把SQLCHAR改为SQLWCHAR。

retcode = SQLConnect(hdbc, 
		(SQLCHAR*)"SPJ", (SWORD)strlen((char*)"student"),
		(SQLCHAR*)"sa", (SWORD)strlen((char*)"sa"),
		(SQLCHAR*)"sa", (SWORD)strlen((char*)"sa"));

问题二:对数据库进行查、增、删、改

连接失败后就要对其进行下一步的操作了。包括看网上相关的别人写的博客,还有书上的例子,都不是很清楚所调用的几个参数的意思到底是什么,所以只能去参考msdn的文档了,官方文档:https://msdn.microsoft.com/library

其中有一点就是要清楚SQLExecDirect()和SQLPrepare()这两个函数的区别,前者是直接执行SQL语句,然后就可以调用SQLFetch()了,而后者并没有直接执行,而是一个准备阶段,比如插入数据,需要在后续的操作中通过SQLBindParameter()来指明要插入的数据,然后在通过SQLExecute()去执行。

最后要注意的是在SQLPrepare()中调用语句时对于变量可以用“?”来代替,例如下边所示。

retcode = SQLPrepare(hstmt, (SQLCHAR*)"insert into S(sno,sname,status,city) values(?,?,?,?)", SQL_NTS);
retcode = SQLPrepare(hstmt, (SQLCHAR*)"update S set sno=?,sname=?,status=?,city=? where sno='S5'", SQL_NTS);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值