Sql 如何使用vb.net从Access db中提取数据并将其放入文本框中?
大家好,我正在尝试使用MS Access中的SQL搜索员工信息,并希望将fname lname和此类详细信息放入对应于特定员工ID号的相应文本框中。我已经设法使SQL工作,但我不知道如何从我的SQL语句中提取文件并将其放在里面。text(文本框),你能指导我吗?谢谢 以下是我目前的代码: (更新了我的代码)收到错误消息:附加信息:ExecuteReader:尚未初始化连接属性。突出显示下面的读者。我怎样才能解决这个问题?我试图提取数据并将其放入文本框?谢谢Sql 如何使用vb.net从Access db中提取数据并将其放入文本框中?,sql,vb.net,ms-access-2007,Sql,Vb.net,Ms Access 2007,大家好,我正在尝试使用MS Access中的SQL搜索员工信息,并希望将fname lname和此类详细信息放入对应于特定员工ID号的相应文本框中。我已经设法使SQL工作,但我不知道如何从我的SQL语句中提取文件并将其放在里面。text(文本框),你能指导我吗?谢谢 以下是我目前的代码: (更新了我的代码)收到错误消息:附加信息:ExecuteReader:尚未初始化连接属性。突出显示下面的读者。我怎样才能解决这个问题?我试图提取数据并将其放入文本框?谢谢 Private Sub eNumTex
Private Sub eNumText_SelectedIndexChanged(sender As Object, e As EventArgs) Handles eNumText.SelectedIndexChanged
Dim dbSource = "Data Source= C:\Databse\Company_db.accdb"
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= c:\Databse\Company_db.accdb"
Dim sqlQuery As String
Dim sqlCommand As New OleDbCommand
Dim sqlAdapter As New OleDbDataAdapter
Dim Table As New DataTable
Dim empNum As String
Dim empFname As String
Dim empLname As String
Dim empDept As String
Dim empStat As String
Dim empYears As String
empNum = eNumText.Text
empFname = empFnameText.Text
empLname = empLnameText.Text
empDept = DeptText.Text
empStat = StatText.Text
empYears = yearstext.Text
sqlQuery = "SELECT * FROM tbl_empinfo WHERE EmpID like empNum"
With sqlCommand
.CommandText = sqlQuery
.Connection = con
.Parameters.AddWithValue("EmpID", empNum)
With sqlAdapter
.SelectCommand = sqlCommand
.Fill(Table)
End With
With DataGridView1
.DataSource = Table
End With
End With
Dim path = "Data Source= C:\Databse\Company_db.accdb"
Dim command = "SELECT * FROM tbl_empinfo WHERE EmpID like empNum"
QueryData(path, command)
con.Close()
End Sub
Private Sub QueryData(PathDb As String, command As String)
Using connection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathDb)
Using da As New System.Data.OleDb.OleDbCommand(command, connection)
connection.Open()
Dim reader = da.ExecuteReader()
If reader.Read() Then
empFnameText.Text = reader("fname")
empLnameText.Text = reader("lname")
End If
connection.Close()
End Using
End Using
End Sub
为此,您只需要以下类:Connection、Command、Reader。 代码中的其他类,有些是多余的,有些是必需的,但比简单的案例演示复杂 调用该方法,以便:
Dim path = "C:\Databse\Company_db.accdb"
Dim command = "SELECT * FROM tbl_empinfo WHERE EmpID like empNum"
QueryData(path, command)
编辑-使用参数:
Private Sub QueryData(PathDb As String, command As String, id As String)
Using connection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathDb)
Using com As New System.Data.OleDb.OleDbCommand(command, connection)
com.Parameters.AddWithValue("", id)
connection.Open()
Using reader = com.ExecuteReader()
If reader.Read() Then
TextBox1.Text = reader("fname")
TextBox2.Text = reader("lname")
End If
End Using
connection.Close()
End Using
End Using
End Sub
调用该方法:
Dim path = "C:\Databse\Company_db.accdb"
Dim command = "SELECT * FROM tbl_empinfo WHERE EmpID = ?"
Dim empNum = "..."
QueryData(path, command, empNum)
我编辑并更新了上面的代码,但它给了我一个错误(更新了我的代码)获取了一条错误消息:附加信息:ExecuteReader:连接属性尚未初始化。Highlightintg Reader,我们如何修复此问题?@user3476579检查您的代码是否与我的相同,我在回答后编辑了它。是的,它仍然给我错误:其他信息:没有为一个或多个必需参数提供值。因此,突出读者。。。读卡器已初始化,我们是否将Dim读卡器称为字符串?@user3476579对我来说效果很好。检查数据库的路径,以及查询是否正确。错误:System.Data.OleDb.OledBeException类型的未处理异常发生在System.Data.dll中。其他信息:没有为一个或多个必需参数提供值。因此,仍然强调读者:(
Dim path = "C:\Databse\Company_db.accdb"
Dim command = "SELECT * FROM tbl_empinfo WHERE EmpID = ?"
Dim empNum = "..."
QueryData(path, command, empNum)