如何将单个单元格的值从 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
正如标题所说,我有一个 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