如何使用 Oledb 的 DataReader 并在 Richtextbox 中获取结果
How to use DataReader from Oledb and get results in Richtextbox
Dim srch As String
srch = ccode.Text
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + IO.Directory.GetCurrentDirectory + "\ptdr.accdb"
cmd.Connection = conn
conn.Open()
Dim dsrch As New OleDbCommand("SELECT pname, page, vdate, psex, summer, bldp, blds, photh, diag, rl, trtmnt, nvdate FROM ptnt_data WHERE pcode = " & srch & "", conn)
Dim rdr As OleDbDataReader = dsrch.ExecuteReader()
Dim dg As String = ""
'diagnosis'
dg = rdr.GetString(8).ToString()
If String.IsNullOrEmpty(dg) Then
diag1.Text = ""
ElseIf String.IsNullOrWhiteSpace(dg) Then
diag1.Text = ""
Else
diag1.Text = dg
End If
它工作正常,但是当我搜索 null 时它给出了一个错误。
它说我在
行有一个错误
dg = rdr.GetString(8).Tostring()
有什么建议吗?
rdr.GetString(8).ToString()
if rdr.GetString(8
) is null 这是一个典型的空引用异常
rdr.GetString(8)
是一个字符串,所以只需删除 .ToString()
根据我下面的评论,如果数据库具有此数据的基础字符串类型,您只能 运行 GetString,列 diag 的数据类型是什么?
(即 运行 rdr.GetFieldType(8) 在调试器中并提供类型名称)
正如您已经确认的那样是一个字符串类型并且问题只是空处理(抱歉我没有;没有从您的问题中发现)您需要:
If rdr.IsDBNull(8) Then diag1.Text = "" Else diag1.Text = rdr.GetString(8) EndIf
应该替换 Dim dg... 向下的所有内容
Dim srch As String
srch = ccode.Text
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + IO.Directory.GetCurrentDirectory + "\ptdr.accdb"
cmd.Connection = conn
conn.Open()
Dim dsrch As New OleDbCommand("SELECT pname, page, vdate, psex, summer, bldp, blds, photh, diag, rl, trtmnt, nvdate FROM ptnt_data WHERE pcode = " & srch & "", conn)
Dim rdr As OleDbDataReader = dsrch.ExecuteReader()
Dim dg As String = ""
'diagnosis'
dg = rdr.GetString(8).ToString()
If String.IsNullOrEmpty(dg) Then
diag1.Text = ""
ElseIf String.IsNullOrWhiteSpace(dg) Then
diag1.Text = ""
Else
diag1.Text = dg
End If
它工作正常,但是当我搜索 null 时它给出了一个错误。 它说我在
行有一个错误dg = rdr.GetString(8).Tostring()
有什么建议吗?
rdr.GetString(8).ToString()
if rdr.GetString(8
) is null 这是一个典型的空引用异常
rdr.GetString(8)
是一个字符串,所以只需删除 .ToString()
根据我下面的评论,如果数据库具有此数据的基础字符串类型,您只能 运行 GetString,列 diag 的数据类型是什么?
(即 运行 rdr.GetFieldType(8) 在调试器中并提供类型名称)
正如您已经确认的那样是一个字符串类型并且问题只是空处理(抱歉我没有;没有从您的问题中发现)您需要:
If rdr.IsDBNull(8) Then diag1.Text = "" Else diag1.Text = rdr.GetString(8) EndIf
应该替换 Dim dg... 向下的所有内容