尝试使用 VB 从 ACCESS 数据库中输出 Visual Web Developer 2008 中的数据

Posted

技术标签:

【中文标题】尝试使用 VB 从 ACCESS 数据库中输出 Visual Web Developer 2008 中的数据【英文标题】:Trying to output Data in Visual Web Developer 2008 from ACCESS Database using VB 【发布时间】: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用于一个或多个必需参数。

谢谢

【问题讨论】:

【参考方案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 文档。

以上是关于尝试使用 VB 从 ACCESS 数据库中输出 Visual Web Developer 2008 中的数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 vb.net 以编程方式将 Access 数据库从 03 转换为 07?

使用VB将数据从Excel导入Ms Access

ASP.NET - VB.NET - 从 MS-Access 数据库中检索记录

如何在 MS Access VB 中访问 SQL Server 标量函数

从 MS Access 数据库行填充 VB 组合框

从 vb.net 将值插入 Access db