2015-12-14 72 views
2

我的MySql数据库由一列id构成,其中包含1到30的数字。我想在每次显示一个文本框中输入数字1到30按钮。然而,我的代码只显示第一行是1单击按钮时如何在文本框中显示不同的sql数据

我曾尝试下面的代码:

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(); 

回答

0

这样做的方法很少。

首先使用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

内容:它只是为了让你知道我没有运行该程序来测试。

0

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

我建议你重新组织你的代码。

例如,调用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(); 
} 
+0

Yohannes。感谢您提供的代码,但您的代码在文本框中显示了所有的数据(1-30),但是我所要求的数据(1-30)应单独显示,例如,当按钮被点击时,它应该单独显示。应该显示1,当第二次点击按钮时它应该显示2等等。 –

+0

嘿,我已经改变了答案。你的主要问题是,由于你的按钮点击事件初始化一个新的连接并执行将数据指针设置为第一条记录的查询,DR1.Read()将始终指向第一条记录。 – Yohannes

相关问题