单击按钮时,如何在文本框中显示不同的sql数据

本文关键字:显示 数据 sql 文本 按钮 单击 | 更新日期: 2023-09-27 18:26:44

我的MySql数据库由一列id组成,其中包含从1到30的数字。我想在每次按下按钮时在文本框中显示数字1到30。然而,我的代码只显示第一行,即1。

我已经尝试了以下代码:

SqlConnection Conn = new SqlConnection("Data Source=SUMIT;Initial Catalog=Project;Integrated Security=True"); 
SqlCommand Comm1 = new SqlCommand("Select * from id", Conn); 
Conn.Open(); 
SqlDataReader DR1 = Comm1.ExecuteReader();
if (DR1.Read()) {
    textBox3.Text = DR1.GetValue(0).ToString();
}
Conn.Close();

单击按钮时,如何在文本框中显示不同的sql数据

有几种方法可以做到这一点。

首次使用SQL

保持按钮点击功能之外的数字计数

int BtnCount = 0;

在按钮点击

SqlConnection Conn = new SqlConnection("Data Source=SUMIT;Initial Catalog=Project;Integrated Security=True"); 
SqlCommand Comm1 = new SqlCommand("Select * from id WHERE ID = " + BtnCount  , Conn); 
Conn.Open(); 
SqlDataReader DR1 = Comm1.ExecuteReader();
if (DR1.Read()) {
    textBox3.Text = DR1.GetValue(0).ToString();
}
Conn.Close();
BtnCount ++;
if(BtnCount>30)
{
    BtnCount = 0;
}

其次,您可以调用集合/列表/数组中的所有数据,这也将提高系统的速度

创建字符串列表

List<string> ListData = new List<string>();

在构造函数中填充列表,如以下

SqlConnection Conn = new SqlConnection("Data Source=SUMIT;Initial Catalog=Project;Integrated Security=True"); 
SqlCommand Comm1 = new SqlCommand("Select * from id WHERE ID = " + BtnCount  , Conn); 
Conn.Open(); 
SqlDataReader DR1 = Comm1.ExecuteReader();
while(DR1.Read()) 
{
    ListData.Add(DR1.GetValue(0).ToString());
}
Conn.Close();

点击按钮,通过BtnCount 显示列表内容

注意:这只是给你一个我还没有运行程序进行测试的想法

我怀疑原因是您的按钮点击事件中有所有代码。因此,每次单击按钮时,它都会创建一个新的连接,执行查询并向您显示第一条记录。

我建议您重新组织代码。

例如,调用SetupData()函数一次(可能在加载时,也可能在任何地方,只要它只执行一次),然后单击按钮单击事件将只包含if语句。

SqlDataReader DR1;
public void SetupData(){
     SqlConnection Conn = new SqlConnection("Data Source=SUMIT;Initial          Catalog=Project;Integrated Security=True"); 
     SqlCommand Comm1 = new SqlCommand("Select * from id", Conn); 
     Conn.Open(); 
     DR1 = Comm1.ExecuteReader();
}
 void OnButtonClick(object sender, EventArgs e)
 {
            if (DR1.Read()) {
                textBox3.Text = DR1.GetValue(0).ToString();
 }