【问题标题】:Trying to output Data in Visual Web Developer 2008 from ACCESS Database using VB尝试使用 VB 从 ACCESS 数据库中输出 Visual Web Developer 2008 中的数据
【发布时间】:2011-11-05 19:12:40
【问题描述】:

好的,我可以成功连接到我的 Access 数据库,但我仍在学习如何输出该数据。这是失败的地方。

我正在设计一个页面,用户在其中输入客户 ID,然后获取该客户的事件列表。然后我希望用户能够添加关于该事件的调查。

我遇到的问题是显示这些数据的能力。我尝试了各种方法。最终,我希望能够将数据显示到列表框中并让他们选择它并进行调查,但我还没有那么远。这是我在连接上的内容以及我无法输出数据的尝试:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sql As String = "SELECT [Title], [Description] FROM [Incidents] WHERE ([CustomerID] = textbox1.text)"
        Dim conn As New System.Data.OleDb.OleDbConnection()
        conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\Users\Allen PC7\Documents\Visual Studio 2008\Projects\1-A SportsPro\App_Data\TechSupport.mdb"
        Dim myCommand As New System.Data.OleDb.OleDbCommand(sql, conn)
        conn.Open()
        Dim myReader As System.Data.OleDb.OleDbDataReader = myCommand.ExecuteReader()
        Try
            While myReader.Read()
                Console.WriteLine(myReader.GetInt32(0).ToString() + ", " + myReader.GetString(1))
            End While
        Finally
            myReader.Close()
            conn.Close()
        End Try

    End Sub

我只是无法在控制台中显示任何内容,而是收到一条错误消息 Dim myReader As System.Data.OleDb.OleDbDataReader = myCommand.ExecuteReader()...System.Data.OleDb.OleDbException: No value given用于一个或多个必需参数。

谢谢

【问题讨论】:

    标签: asp.net vb.net ms-access datareader


    【解决方案1】:

    您没有向 SQL 传递正确的值:

    "SELECT [Title], [Description] FROM [Incidents] WHERE ([CustomerID] = textbox1.text)"
    

    它将尝试寻找等于数据库值“textbox1.text”的CustomerID。由于这可能是错误的数据类型和不存在的表/列,因此您会收到错误消息。

    您应该使用parameterized query 来避免SQL Injection

    Dim sql As String = "SELECT [Title], [Description] FROM [Incidents] WHERE ([CustomerID] = ?)"
    
    Dim myCommand As New System.Data.OleDb.OleDbCommand(sql, conn)
    myCommand.Parameters.Add("@p1", OleDbType.Integer, 4).Value = textbox1.text
    

    如果 textbox1.text 中的值不是正确的类型,这将失败 - 您应该验证并转换为正确的类型(我的代码假定为整数)。

    【讨论】:

    • 那么我将如何进行一个简单的查询以从 textbox1 中获取值并显示该特定输入客户 ID 号的标题和描述?我几乎没有运气在网上找到这些信息。
    • @allencoded - 修改答案,添加示例。我建议阅读 OleDB 类的 MSDN 文档。
    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多