如何将单个单元格的值从 Access 数据库添加到字符串变量

How can I add the value of a single Cell from Access database to a string variable

正如标题所说,我有一个 MS Access 数据库,我需要从中找到由字符串值确定的特定数据集。必须这样做的原因是我可以在此数据集中找到单个单元格的值,该单元格必须用作查找特定文件的路径。到目前为止,我的方法如下:

 Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ExaptLokal.accdb")
Dim cmd As New OleDb.OleDbCommand
Dim dt As New DataTable
Dim da As New OleDb.OleDbDataAdapter
Dim sql As String
 sql = "SELECT NC_KEY FROM EXAPT_NC_KOPF_DATEN WHERE NC_PROGRAMM_NAME =" & ProgrammNr.Text.ToString
        MsgBox(sql)
        conn.Open()
        cmd.Connection = conn
        cmd.CommandText = sql
        da.SelectCommand = cmd
        da.Fill(dt)
        fullpath = dt.ToString

最后,我想将 SQL 查询的结果作为我的“完整路径”变量的值,但到目前为止 da.Fill(dt) 行让我很难说与数据类型冲突。

在这种情况下是否需要数据表,或者我是否可以跳过该步骤并直接在完整路径变量中获取查询结果?

在此先感谢大家

编辑:感谢您的帮助(虽然不是最友好的,但我能判断谁)我终于让它与 Execute Scalar 方法一起工作。我只希望这个网站的新手能受到更好的欢迎 哈哈 祝你有美好的一天

我将连接字符串移动到 class 级别变量,以便您可以在其他方法中使用它。

我将您的数据访问代码与用户界面代码分开,将文本框中的值传递给 returns 路径的函数。

我将您的 select 语句更改为使用参数。 始终使用参数来避免sql注入并避免错误。

使用Using...End Using 块来确保您的数据库对象已关闭和处置。此 Using 块涵盖了命令和连接。

您可以将 .CommandText.Connection 直接传递给命令的构造函数。

向参数集合添加参数时,您需要提供参数名称、数据库中的数据类型以及字段的大小。我不得不猜测类型和大小,所以请检查您的数据库以获取实际值。

由于您需要一个值,因此您可以使用 .ExecuteScalar.

Private ConStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ExaptLokal.accdb"

Private Function GetPath(ProgrammNr As String) As String
    Dim fullpath As String
    Dim sql = "SELECT NC_KEY FROM EXAPT_NC_KOPF_DATEN WHERE NC_PROGRAMM_NAME = @ProgrmmNr"
    Using conn As New OleDb.OleDbConnection(ConStr),
            cmd As New OleDb.OleDbCommand(sql, conn)
        cmd.Parameters.Add("@ProgrmmmNr", OleDbType.VarChar, 100).Value = ProgrammNr
        conn.Open()
        fullpath = cmd.ExecuteScalar.ToString
    End Using
    Return fullpath
End Function

用法...

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim fullpath = GetPath(ProgrammNr.Text)
End Sub