在一个过程中要打开两个表,我现在是用如下方法
            Dim Conn, conn1 As New SqlConnection
            Dim Comd, comd1 As SqlCommand
            Dim strsql As String
            Dim obj As New jbfx.pub
            Dim Dtrd, dtrd1 As SqlDataReader
            Conn.ConnectionString = obj.Conn_str
            Conn.Open()
            Conn1.ConnectionString = obj.Conn_str
            Conn1.Open()
            strsql = "select * from bm where s_sjbm='00000000'"
            Comd = New SqlCommand(Trim(strsql), Conn)
            Dtrd = Comd.ExecuteReader()
            ListBox1.Items.Clear()
            Do While Dtrd.Read
            ListBox1.Items.Add(New ListItem(Dtrd("s_bm"), Dtrd("s_bmid")))
            Loop
            strsql = "select * from zdjg where id=" & Request("sjgid")
            comd1 = New SqlCommand(strsql, conn1)
            dtrd1 = comd1.ExecuteReader()
            TextBox1.Text = i
            'TextBox2.Text = dtrd1("i_yj")
            conn1.Close()
            Conn.Close()
可是如果我让'TextBox2.Text = dtrd1("i_yj")一执行就报错不知为什么.
另SqlConnection是否可以只做一个,我开始也是做一个SqlConnection,但执行dtrd1 = comd1.ExecuteReader()就报错,不知为什么.

解决方案 »

  1.   

    可是如果我让'TextBox2.Text = dtrd1("i_yj")一执行就报错不知为什么.
    ================
    1.dtrd1 = comd1.ExecuteReader()
    TextBox1.Text = i
    'TextBox2.Text = dtrd1("i_yj")》》》// C# 语法, 主要是要先调用 SqlDataReader.Read()
    dtrd1 = comd1.ExecuteReader();
    if(dtrd1.Read()) { // 
     TextBox1.Text = i.ToString();
     TextBox2.Text = dtrd1["i_yj"].ToString();
    }2.
    另SqlConnection是否可以只做一个
    ============
    可以,
    但是, 有一个 Connection 只能同时给 一个 DataReader 使用,
    即,你得先关了 Dtrd, 才能用 dtrd1
      

  2.   

    调用 xxxDataReader.Close() 关闭
      

  3.   

    一个SqlDataReader可以同时执行多个语句,语句之间使用分号“;”分开就可以了。使用SqlDataReader.NextResult 方法以跳到下一个记录集的信息以读取。