2016-07-06 41 views
-1

说实话我刚刚对编程感兴趣,这是我的第一个项目,我被困住了。所以我创建了dinamical文本框,我想将信息保存到数据库,但每次都会弹出致命错误。我知道连接是正确的。我知道问题是与dinamical文本框,搜索扔互联网,没有找到解决办法,对英语不好,对不起,希望你能帮助我。不能插入数据到mysql,遇到致命错误

 private void button2_Click(object sender, EventArgs e) 
    { 
     TextBox textbox1 = new TextBox(); 
     textbox1.Size = new Size(75,23); 
     textbox1.Text = "Pav."; 
     textbox1.Location = new Point(0, 0); 
     panel1.Controls.Add(textbox1); 
     string name = textbox1.Text; 

     TextBox textbox2 = new TextBox(); 
     textbox2.Size = new Size(75, 23); 
     textbox2.Text = "0.5"; 
     textbox2.Location = new Point(80, 0); 
     panel1.Controls.Add(textbox2); 
     float sum = float.Parse(textbox2.Text); 

     ComboBox comboBox4 = new ComboBox(); 
     comboBox4.Size = new Size(75, 23); 
     comboBox4.Text = "-Type-"; 
     comboBox4.Items.Add("Salary"); 
     comboBox4.Location = new Point(170, 0); 
     comboBox4.Items.Add("Other"); 
     comboBox4.Name = "comboBox4"; 
     panel1.Controls.Add(comboBox4); 



     Button btn = new Button(); 
     btn.Text = "Save"; 
     btn.Location = new Point(250, 0); 
     btn.Click += delegate 
     { 
      if (comboBox4.SelectedItem.ToString() == "Salary") 
      { 
       string myConnection = "datasource=localhost; port=3306; username=root; password=root"; 
       string insert = "insert into budget.incomes (Name, sum) values (@Name, @sum);"; 
       MySqlConnection conDataBase = new MySqlConnection(myConnection); 
       MySqlCommand cmdDataBase = new MySqlCommand(insert, conDataBase); 
       MySqlDataReader myReader; 
       try 
       { 
        conDataBase.Open(); 
        myReader = cmdDataBase.ExecuteReader(); 
        MessageBox.Show("Saved"); 
        this.Close(); 
        while (myReader.Read()) 
        { } 

       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
      } 
+0

'sum'是一个关键字,但你也没有为这些参数提供任何值,所以根本不知道什么* *插入 – Plutonix

+0

NumericUpDown控件可能是一个更好的选择,编辑浮动。 – Kinetic

+0

你应该发布你的错误,因为我们只是在这里猜测你的问题。 – Kinetic

回答

0

您不需要DataReader,而需要使用参数。

string myConnection = "datasource=localhost; port=3306; username=root; password=root"; 
string insert = "insert into budget.incomes (Name, sum) values (@Name, @sum);"; 

using (var conDataBase = new MySqlConnection(myConnection)) 
using (var cmdDataBase = new MySqlCommand(insert, conDataBase)) 
{  
    cmdDataBase.Parameters.AddWithValue("@Name", name); 
    cmdDataBase.Parameters.AddWithValue("@Sum", sum); 
    conDataBase.Open(); 
    cmdDataBase.ExecuteNonQuery(); 
    MessageBox.Show("Saved");  
} 
this.Close(); 
+0

谢谢,现在一切都很好。我只是在YouTube上使用了DataReader。 – Harikeinas

+0

好的。您使用DataReader读取数据(因此名称)。 – Kinetic

+0

是的,我花了一分钟的时间思考它,该教程是关于注册和登录表单的,所以他使用了DataReader。没关系,当时有一堂课,最重要的是进步:D – Harikeinas

相关问题