【问题标题】:VB.net Query wont retrieve data from access databaseVB.net 查询不会从访问数据库中检索数据
【发布时间】:2015-03-18 21:45:17
【问题描述】:

我使用带有参数的 vb.net 创建了一个查询,该参数应该允许查询从我的访问数据库中检索数据,但是当我单击该按钮时,它只显示空白字段,但没有从数据库中检索任何行。你能帮我解决我目前做错的事情吗?

Imports System.Data.OleDb

公共类RouteToCruise

Private Sub RouteToCruise_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub Route_Btn_Click(sender As Object, e As EventArgs) Handles Route_Btn.Click
    Try


    Dim row As String
        Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DeepBlueTables.mdb"
    Dim cn As OleDbConnection = New OleDbConnection(connectString)
    cn.Open()
        Dim CruiseQuery As String = "SELECT Route.RouteName + ', ' + Cruise.CruiseID As CruiseRoute FROM Route INNER JOIN Cruise ON Route.RouteID = Cruise.RouteID  WHERE CruiseID = ?"


        Dim cmd As New OleDbCommand(CruiseQuery, cn)
        'cmd.Parameters.AddWithValue("CruiseID", OleDbType.Numeric).Value = Route_Txt.Text
        cmd.Parameters.AddWithValue(("CruiseID"), OleDbType.Numeric)

        Dim reader As OleDbDataReader = cmd.ExecuteReader


        'RCTable.Width = Unit.Percentage(90.0)                       
        RCTable.ColumnCount = 2
        RCTable.Rows.Add()
        RCTable.Columns(0).Name = "CruiseID"
        RCTable.Columns(1).Name = "RouteName"


        While reader.Read

            Dim rID As String = reader("RouteID").ToString()
            cmd.Parameters.AddWithValue("?", rID)


            row = reader("CruiseID") & "," & ("RouteName")

            RCTable.Rows.Add(row)

        End While

        reader.Close()
        cn.Close()

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

结束类

如果用户在文本框中输入路线名称,则各行应显示每条选定路线的巡航 ID 和路线名称。例如,如果用户在文本框中输入 Asia,单击按钮,则查询应返回前往亚洲的游轮的 CruiseID。

【问题讨论】:

  • "SELECT Route.RouteName + ', ' + Cruise.CruiseID As CruiseRoute 将 2 列粘合在一起,因此 reader("RouteID") 应该会崩溃,因为没有这样的列。 RCTable 是什么??

标签: vb.net


【解决方案1】:

您对参数的使用毫无意义。首先调用AddWithValue 并且不提供任何值,然后执行查询,然后在读取数据时开始添加更多参数。要么调用AddWithValue 并提供一个值,要么调用Add 然后在创建的参数对象上设置Value。无论哪种方式,它都必须在您执行查询之前,否则它是无用的。

myCommand.Parameters.AddWithValue("@ParameterName", parameterValue)

Dim myParameter = myCommand.Parameters.Add("@ParameterName", OleDbType.Numeric)

myParameter.Value = parameterValue

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2022-01-16
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多