数据库数据到文本框中

时间:2017-05-13 11:28:24

标签: c# database textbox

有没有办法将数据库中的数据显示到文本框中,但每次单击“下一行”新行时都会显示。我有这个代码,但它不能像我想要的那样工作,因为它将所有数据显示在文本框中而不是一次显示一行。

private void buttonNEXT_Click(object sender, EventArgs e)
{
    SQLiteConnection conn = new SQLiteConnection("data source = people.sqlite");
    conn.Open();
    SQLiteCommand com = new SQLiteCommand(conn);
    com.CommandText = "SELECT id, name, surname FROM people;";
    SQLiteDataReader reader = com.ExecuteReader();
    while (reader.Read())
    {
        textBox1.Text += reader["id"].ToString(); 
        textBox2.Text += reader["name"].ToString();
        textBox3.Text += reader["surname"].ToString();
    }
    conn.Close();
}

1 个答案:

答案 0 :(得分:0)

如果您想拥有NextPrevious按钮,并且不希望在表单上使用BindingNavigator控件,则可以使用DataSet存储数据和SQLiteDataAdapter来填充它。 因此,您可以使用函数来填充和返回数据集:

public DataSet GetDataSet(string ConnectionString, string SQL)
{
    SQLiteConnectionconn = new SQLiteConnection(ConnectionString);
    SQLiteDataAdapter da = new SQLiteDataAdapter ();
    SQLiteCommand cmd = conn.CreateCommand();
    cmd.CommandText = SQL;
    da.SelectCommand = cmd;
    DataSet ds = new DataSet();

    conn.Open();
    da.Fill(ds);
    conn.Close();

    return ds;
}

然后您应该将其返回值保留在主函数中的global variable,例如FormLoad

dataset ds; // global variable
int index = 0; // for loop over dataset
private void frm_Load(object sender, EventArgs e)
{
    ds = GetDataSet("data source = people.sqlite","SELECT id, name, surname FROM people;");
}

然后在按钮中点击:

private void buttonNEXT_Click(object sender, EventArgs e)
{
     textBox1.Text = ds.Tables["People"].Rows[i]["id"].ToString(); 
     textBox2.Text = ds.Tables["People"].Rows[i]["name"].ToString();
     textBox3.Text = ds.Tables["People"].Rows[i]["surname"].ToString();
     i++;
}

注意:您应该每次点击检查i变量值,它不应该大于ds.Tables [“People”]。Rows.Count

如果您也想要,也可以使用上一个按钮。