2016-07-06 67 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

相關問題