有没有办法将数据库中的数据显示到文本框中,但每次单击“下一行”新行时都会显示。我有这个代码,但它不能像我想要的那样工作,因为它将所有数据显示在文本框中而不是一次显示一行。
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();
}
答案 0 :(得分:0)
如果您想拥有Next
和Previous
按钮,并且不希望在表单上使用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
如果您也想要,也可以使用上一个按钮。