如何将SQLite数据库查询中的数据加载到文本框中?

时间:2018-03-18 22:38:38

标签: sql vb.net sqlite combobox textbox

所以我为项目制作了一个rota系统,我需要一个文本框来输出用户当前在组合框中选择的员工的合同时间。问题是,我不知道如何去做;

    Sub GetContractedHours()

    Dim sSql As String
    Dim newds As New DataSet
    Dim newdt As New DataTable

    sSql = "SELECT emp_contractedhours FROM Employee WHERE emp_fn ='" & cboEmpName.Text & "%'"

    Dim con As New SQLiteConnection(ConnectionString)
    Dim cmd As New SQLiteCommand(sSql, con)
    con.Open()
    Dim da As New SQLiteDataAdapter(cmd)
    da.Fill(newds, "Employee")
    newdt = newds.Tables(0)

    txtUserAlertHours.DataSource = newdt
    con.Close()

End Sub

请帮忙! :)

1 个答案:

答案 0 :(得分:0)

您不需要任何代码。只需首先获取所有数据,然后绑定ComboBoxTextBox,例如

Dim table As New DataTable
Dim conection As New SQLiteConnection(ConnectionString)
Dim adapter As New SQLiteDataAdapter("SELECT emp_fn, emp_contractedhours FROM Employee", connection)

adapter.Fill(table)

cboEmpName.DisplayMember = "emp_fn"
cboEmpName.DataSource = table

txtUserAlertHours.DataBindings.Add("Text", table, "emp_contractedhours")

当您在TextBox中进行选择时,ComboBox会自动填充。这就是数据绑定的工作原理。

如果您确实希望每次查询数据库,那么您根本不应该使用数据适配器。您只需检索一个值,而这正是ExecuteScalar的确切含义。使用适当的SQL创建命令,调用ExecuteScalar并将结果分配给Text的{​​{1}}。

如果你确实想要使用你拥有的代码进行数据绑定(这将是愚蠢的),那么你可以像我上面演示的那样绑定。请注意,如果您每次都要使用不同的TextBox,则需要先删除旧的绑定。如果您没有绑定任何其他属性,则可以通过调用DataTable集合上的Clear来轻松完成此操作。