2017-03-03 67 views
0

我想创建编辑窗口来编辑数据库中的行。C#获取数据库行中的所有项目

如何从数据库行读取所有项目?

我的代码到现在为止是:

private void FirmCustomerValues() 
    { 
     config conf = new config(); 
     connection = new MySqlConnection(conf.connection_string); 
     try 
     { 
      if (this.OpenConnection() == true) 
      { 
       MySqlCommand cmd = new MySqlCommand("SELECT * FROM firmenkunden WHERE id='" + firmCustomerID + "'",connection); 

       MySqlDataReader reader = cmd.ExecuteReader(); 
       while (reader.Read()) 
       { 
        foreach (var row in reader) 
        { 
         System.Windows.Controls.TextBox textbox = new TextBox(); 

         // Textbox Properties 
         textbox.Width = 159; 
         textbox.Name = ""; 
         textbox.Text = reader[1].ToString(); 

         textboxWP.Children.Add(textbox); 
        } 



       } 

      } 
     } 
     catch (MySqlException ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

但是,这是行不通的。 有没有人有一个想法如何解决这个问题?

我想我也需要for循环。如果答案很简单,那么我对C#很感兴趣。

+0

textBoxWP是如何设置的? –

+1

不应该这个读者[1] .ToString(); be row.ToString(); ? –

+0

你可能会考虑使用第三方库“Dapper”。编程更容易,对SQL注入更安全,速度也更快。 – NotTelling

回答

0

只要删除foreach循环。

reader.Read()通过返回的行进行迭代。

您可以使用reader.HasRows(),以确定是否有任何行

也尝试使用textbox.Text = reader["ColumnName"].ToString(); ,因为这是更容易阅读。

要生成一个唯一的文本框的名称

var textBoxCounter =0; 

内,您的阅读()循环

textbox.Name = string.Format("txtText{0}", textBoxCounter); 
textbox.Text = reader[1].ToString(); 
textBoxCounter += 1; 

希望有所帮助。

+0

如何使用reader.HasRows()? ()。(while)(while(reader.Read()) { System.Windows.Controls.TextBox textbox = new TextBox(); // Textbox Properties textbox.Width = 159; textbox.Name =“”; textbox.Text = reader [“ColumnName”]。ToString(); textboxWP.Children.Add(textbox); }' 但他不能做'textbox.Text = reader [“ColumnName”]。ToString();' –

+0

它只是为该行中的每个值创建一个文本框,而不是文本框。 –

+0

你需要给他们唯一的名字。你将它们设置为空白。什么是textboxWP?我编辑了答案 – Wheels73

相关问题