请教几个关于ODBC接口的问题

lizelglg3hao 2014-01-22 05:27:48
1、我动态的用SQLDescribeCol取每一列的数据类型,然后SQLBindCol设置,但当某列是字符串的时候,函数就失败,他说类型超出范围,我在想如果设置成SQL_BINARY,那odbc会不会像memcpy一样按照内存里的数据状态原样拷贝到我的缓冲里,如果不是,那有没有其他方法解决我之上问题
2、当我绑定好缓冲以后,调用SQLFetch函数,可是当表里某项没填值的时候,fetch无法去的数据,可是我用c#能够取,只是那项为空,用api就直接整行都取不了,请问碰到这种情况一般怎么做,至少让我把那行存在的数据取出来?(若是去表里把列修改成非必填字段就算了,因为实际情况不允许)
...全文
181 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizelglg3hao 2014-01-23
  • 打赏
  • 举报
回复
引用 3 楼 shoppo0505 的回复:
你怎么知道是fetch读不出来?还是你不让fetch读出来?又或者是你的api不能解析?
我调用fetch,绑定的缓冲数据没变,而且fetch的返回值也不是SQL_SUCCESS
shoppo0505 2014-01-23
  • 打赏
  • 举报
回复
这么说太抽象了。问题只能靠猜。 能不能将数据库和前台程序代码贴出来?
shoppo0505 2014-01-22
  • 打赏
  • 举报
回复
你怎么知道是fetch读不出来?还是你不让fetch读出来?又或者是你的api不能解析?
lizelglg3hao 2014-01-22
  • 打赏
  • 举报
回复
引用 1 楼 shoppo0505 的回复:
1. 完全原样读取的,当然,每列的类型定义必须一样。 2. Fetch的时候,用ISNULL函数判断,如果是NULL就做相应操作。不可能读不了,可能是界面不能处理Database.Empty的 异常。或者你可以在读取的时候,对于那个列用ISNULL判断,如果是NULL就用NULLIF返回期望值。
问题2:不是整行null,是一行里某一项为null,可是,fetch是将一整行拷贝到我绑定的缓冲里,一旦有一项为null,整行的fetch都读不出来了,这是不是需要设置什么啊?
shoppo0505 2014-01-22
  • 打赏
  • 举报
回复
1. 完全原样读取的,当然,每列的类型定义必须一样。 2. Fetch的时候,用ISNULL函数判断,如果是NULL就做相应操作。不可能读不了,可能是界面不能处理Database.Empty的 异常。或者你可以在读取的时候,对于那个列用ISNULL判断,如果是NULL就用NULLIF返回期望值。

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧