Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database OLEDBEException未处理(没有为一个或多个必需参数提供值)-Visual Studio 2010_Database_Vb.net_Visual Studio 2010_Oledb - Fatal编程技术网

Database OLEDBEException未处理(没有为一个或多个必需参数提供值)-Visual Studio 2010

Database OLEDBEException未处理(没有为一个或多个必需参数提供值)-Visual Studio 2010,database,vb.net,visual-studio-2010,oledb,Database,Vb.net,Visual Studio 2010,Oledb,我正在做一个关于铁路预订系统的项目,我希望用户能够访问他的预订历史记录。下面的代码访问数据库中两个表中的记录。当我只为一个表运行此代码访问一个表中的记录时,它工作正常,但当我为两个表运行此代码时,它会给我一个错误,表示OLEDBEException未处理,没有为更多需要的参数提供值 da.菲尔兹,表2 我知道这一行是错误的,因为它只适用于一张桌子,但我不知道如何适用于两张桌子。请帮忙!谢谢大家! 导入System.Data.OleDb 公开课表格12 Dim connString As Stri

我正在做一个关于铁路预订系统的项目,我希望用户能够访问他的预订历史记录。下面的代码访问数据库中两个表中的记录。当我只为一个表运行此代码访问一个表中的记录时,它工作正常,但当我为两个表运行此代码时,它会给我一个错误,表示OLEDBEException未处理,没有为更多需要的参数提供值

da.菲尔兹,表2

我知道这一行是错误的,因为它只适用于一张桌子,但我不知道如何适用于两张桌子。请帮忙!谢谢大家!

导入System.Data.OleDb

公开课表格12

Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\AMEN\Documents\Railway.accdb"
Dim MyConn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim tables As DataTableCollection
Dim source1 As New BindingSource

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MyConn = New OleDbConnection
    MyConn.ConnectionString = connString
    ds = New DataSet
    tables = ds.Tables
    da = New OleDbDataAdapter("Select P.Tnumber, P.Name , P.Age ,T.PNR_Number,  P.Train_Name , P.SeatNo , P.Berth , P.Coach_Number , T.Starting_Point , T.Destination , T.Departure , T.Arrival , T.Fare From Table1,Table2 Where P.Train_Name = T.Train_Name and P.Phone= TextBox1.Text ", MyConn)
    da.Fill(ds, "Table2")

    Dim view As New DataView(tables(0))
    source1.DataSource = view
    DataGridView1.DataSource = view

End Sub

End Class

看起来您的查询中有两个表要连接在一起。在您的查询中,我将在表1是T,表2是P的前提下继续。如果是相反的,就改变它

话虽如此,请尝试以下方法:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Using cn = New OleDbConnection(connString)
        cn.Open()
        Using da = New OleDbDataAdapter("SELECT P.Tnumber, P.Name , P.Age ,T.PNR_Number,  P.Train_Name , P.SeatNo , P.Berth , P.Coach_Number , T.Starting_Point , T.Destination , T.Departure , T.Arrival , T.Fare FROM Table1 T INNER JOIN Table2 P ON P.Train_Name = T.Train_Name WHERE P.Phone='" & TextBox1.Text & "'", cn)
            Dim dt = New DataTable
            da.Fill(dt)
            DataGridView1.DataSource = dt
        End Using
    End Using
End Sub

使用块作为连接和数据适配器等一次性资源也是一个好主意。

谢谢您的回复。上面说OledbeException未在da.Filldt处理。还表示没有为一个或多个必需参数指定值。听起来您可能对查询语法有问题。如果可以将查询复制并粘贴到查询工具中,用WHERE子句中的测试值替换实际值,然后查看它的说明。您的表名为Table1和Table2吗?是的,我的表名为Table1和Table2