C语言ODBC操作数据库遇到的一些问题
2016-10-27 20:05
1386 查看
问题一:连接失败
我成功装了SQLSERVER2008,并且成功配置数据源,测试也成功了。但是在vs2013中用代码连接数据库时,SQLConnect始终返回-1 ,百思不得其解,最后在网上查阅资料后终于发现了
解决办法:
通过ODBC编程时,不要用UNICODE字符集,具体操作为:项目属性(最后一个)--配置属性--常规--项目默认值--字符集,将使用Unicode字符集改为未设置即可
。这时候下边这句代码就不会报错,不然会一直提示你把SQLCHAR改为SQLWCHAR。
问题二:对数据库进行查、增、删、改
连接失败后就要对其进行下一步的操作了。包括看网上相关的别人写的博客,还有书上的例子,都不是很清楚所调用的几个参数的意思到底是什么,所以只能去参考msdn的文档了,官方文档:https://msdn.microsoft.com/library
其中有一点就是要清楚SQLExecDirect()和SQLPrepare()这两个函数的区别,前者是直接执行SQL语句,然后就可以调用SQLFetch()了,而后者并没有直接执行,而是一个准备阶段,比如插入数据,需要在后续的操作中通过SQLBindParameter()来指明要插入的数据,然后在通过SQLExecute()去执行。
最后要注意的是在SQLPrepare()中调用语句时对于变量可以用“?”来代替,例如下边所示。
我成功装了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);
相关文章推荐
- 使用Linq 更新数据库时遇到的一些问题及解决办法
- 数据库连接及操作所遇到的问题
- 关于MFC中数据库操作中遇到的问题:Microsoft C++ 在xxx内存处出现问题_com_error的另一解决方案
- C语言学习过程中遇到的一些问题——already define in *.obj
- adb操纵数据库中遇到的一些问题
- 使用Linq 更新数据库时遇到的一些问题及解决办法
- 初学数据库遇到的一些问题
- 在Visual studio 2013环境中通过ODBC实现数据库互连时遇到的问题
- ios 操作sqlite3数据库遇到的问题
- 不同服务器之间的数据库创建触发器会遇到的一些问题
- sql server 2000中的数据库附加到sql server 2005中会遇到的一些问题
- 初学数据库遇到的一些问题
- 在向数据库中插入客户端IP调试时遇到的一些问题
- ODBC-C语言操作数据库(SQL Server 2000)(上)
- MySql 中的数据库的操作还有一些编码问题
- Java和C#访问同一个数据库遇到的一些问题
- gcc编译c语言(访问数据库mysql)时可能遇到的问题
- 对cookie操作的时候遇到了一些的 删除、修改、查询不了问题,看来篇文章发现不错,抓一下
- win7 64bits 设置ODBC遇到的一些问题 “未发现数据源…” “驱动程序和应用程序之间体系结构不匹配……”
- ODBC-C语言操作数据库(SQL Server 2000)(下)