急,又得麻烦大家了

zhoutengxiao 2010-07-05 06:44:48
vb.net中,查询数据时,如果数据库中的字段值为空,用dataread读取时总是报错,代码如下:
Dim comd As New OleDbCommand("select * from books where t_id='" & TextBox1.Text & "' ", conn)
Dim dr As OleDbDataReader = comd.ExecuteReader()
do while dr.read()
textbox1.text=dr("x_id")
loop
代码如上,如果x_id 的值为空。总是报错:System.InvalidCastException: 从类型“DBNull”到类型“String”的强制转换无效。
这个该怎么处理啊
...全文
113 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
红衣老大 2010-07-06
  • 打赏
  • 举报
回复
Dim i As String = IIf(r("id") Is DBNull.Value, "", r("id"))

这是很常用的技巧哦

bcrun 2010-07-06
  • 打赏
  • 举报
回复
楼主辛苦了!
兔子-顾问 2010-07-05
  • 打赏
  • 举报
回复
If
->
iif

你笔误?
古今多少事 2010-07-05
  • 打赏
  • 举报
回复
不需要,根据提示调试下看看。
zhoutengxiao 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 asdfy 的回复:]
IIf
[/Quote]
也不行啊,改成IIF后,textbox1.text = If(dr("x_id") = DBNull.Value, "", dr("x_id").ToString())中的dr("x_id") = DBNull.Value下出现了波浪线,那这个判断语句需要引入域名空间吗
Kation 2010-07-05
  • 打赏
  • 举报
回复
这样:
For i = 1 to dr.FieldCount +1
textbox1.text=dr("x_id")
If i = dr.FieldCount <> Then dr.Read()
Next
古今多少事 2010-07-05
  • 打赏
  • 举报
回复
IIf
zhoutengxiao 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
textbox1.text = If(dr("x_id") = DBNull.Value, "", dr("x_id").ToString())
[/Quote]
这个不行啊,if报错
wuyq11 2010-07-05
  • 打赏
  • 举报
回复
textbox1.text = If(dr("x_id") = DBNull.Value, "", dr("x_id").ToString())
shiyuyao1987 2010-07-05
  • 打赏
  • 举报
回复
if(!dr.IsDBNull(2))
{
textbox1.text=dr.getTostring(2);
}

2为x_id列的索引
Kation 2010-07-05
  • 打赏
  • 举报
回复
添加判断:
If dr.FieldCount > 0 Then

End If

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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