显示多个数据库信息

时间:2011-07-07 12:53:18

标签: mysql vb.net

我的任务很艰巨,我认为超出了我对数据库的了解程度。我只学了一个星期,所以我需要帮助。

我目前有一个旧数据库,其中包含请求和客户的表。此信息当前显示在ASP.NET

我需要做的是将用户的新数据库连接到此系统,同时保留旧数据库中请求的表。因此它使用2个数据库。我已经设置了它,当用户创建一个新请求时,它在请求表中使用来自新数据库的userID保存它,但是当显示该表时,它使用这个新的userID从中查找用户信息。老客户表。因此我最终得到了这个:

Sub BindDataGrid()
    cmdoledb = New SqlCommand("SELECT r.customerid, r.RequestID, R.RequestDate, R.RequestDescription, a.AssignedTo, r.Urgency, r.ExCompletionDate from tbl_requests r, tbl_assignedto a where r.statusid = 1 and r.assignedtoid= a.assignedtoid ", objConn)
    objConn.Open()

    Dim rdr As SqlDataReader
    Dim myItem As ListItem = New ListItem()
    rdr = cmdoledb.ExecuteReader(0)

    While rdr.Read()
        myItem = New ListItem()
        myItem.Value = rdr.GetInt32(0)
        cmddb = New SqlCommand("SELECT SESFirstName + ' ' + SESLastName As fullname from SESLogin where SESLoginID = @customerID", objConnect)
        cmddb.Parameters.AddWithValue("@customerID", myItem.Value)
        objConnect.Open()
        Dim anotherAdapter As New SqlDataAdapter(cmddb)
        Dim dss As New DataSet
        anotherAdapter.Fill(dss)
        dgrdUsers.DataSource = dss
        objConnect.Close()
    End While

    Dim myAdapter As New SqlDataAdapter(cmdoledb)
    Dim ds As New DataSet
    myAdapter.Fill(ds)
    dgrdUsers.DataSource = ds
    dgrdUsers.DataBind()
    objConn.Close()
End Sub

目前它什么也没有显示,并且myItem.Value = rdr.GetInt32(0)为空时发出错误。我一步一步地完成它,它将customerid正常加载到myItem.Value中,但是当它们用完时,它应该退出,但继续运行,从而产生错误。

我知道这段代码非常愚蠢,但据我所知,这就是我能想到的。因此,我需要你的帮助和建议,以解决我遇到的这个问题。

1 个答案:

答案 0 :(得分:0)

嗯,我要做的第一件事是将两个数据库合并为一个(最好使用视图作为现有表的替换),如果你确实使用了两个dbs(从你的代码示例中不清楚你是否真的在使用它两个dbs或简单的附加表格。)

您正在执行两次主要查询,一次用于数据读取器,一次用于dataadapter.fill。您应首先执行填充,然后迭代生成的行。代码示例使用oreder中的列表项来包含单个整数,除非您没有显示所有代码,否则您应该使用整数变量。

我不知道它是否适合您正在做的事情,但您只需要一个包含两个表的数据集来包含您要检索的数据。