sql—如何将access数据库中单个单元格的值添加到字符串变量

jjhzyzn0  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(363)

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

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查询的结果作为“fullpath”变量的值,但到目前为止 da.Fill(dt) row让我很难说它与数据类型有冲突。
在这种情况下是否需要datatable,或者是否可以跳过该步骤,直接在fullpath变量中获取查询结果?
提前感谢大家
编辑:谢谢你的帮助(虽然不是最友好的,但我是谁的判断),我终于得到它的工作 Execute Scalar 方法。我只希望这个网站的新手会受到更好的欢迎,哈哈,有一个伟大的一天

mepcadol

mepcadol1#

我将连接字符串移动到类级变量,以便您可以在其他方法中使用它。
我将数据访问代码与用户界面代码分开,将值从文本框传递给返回路径的函数。
我将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

相关问题