如何使用 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... 向下的所有内容