2014-02-27 49 views
1

我有一個存儲客戶端信息的C#應用​​程序。我使用MySQL Workbench作爲後端。現在,當我將數據插入數據庫(通過表單上的各種控件)時,主鍵(client_file_no)會自動遞增,但其餘字段顯示「NULL」。我已經檢查了一遍又一遍的代碼,但我仍然無法找到錯誤。MySQL查詢在C#中的數據庫中插入空值

try 
      { 
       ConnectionDBLabData cdld = new ConnectionDBLabData(); 
       string ConnStr = cdld.GetConnectionString(); 
       MySqlConnection conn = new MySqlConnection(ConnStr); 
       conn.Open(); 
       string QueryString = "insert into client_tbl (client_date_of_creation, client_referral_code, client_first_name, client_middle_name, client_last_name, client_sex, client_nationality, client_status, client_civil_id , client_birthday, client_born_year , client_preferred_language, client_occupation , client_email, client_tel_mobile, client_tel_home1, client_tel_home2, client_tel_work1,client_tel_work2, client_address1, client_address2, client_notes, client_cc , client_credit, client_debit, client_debitmax, client_stat, client_pricetype, client_qr_path) VALUES(@value1, @value2, @value3 ,@value4, @value5 ,@value6, @value7, @value8, @value9 ,@value10 ,@value11, @value12, @value13, @value14, @value15, @value16, @value17, @value18, @value19, @value20, @value21, @value22, @value23, @value24, @value25, @value26, @value27, @value28, @value29)"; 
       MySqlCommand cmd = new MySqlCommand(QueryString, conn); 
       cmd.Parameters.Add("@value1", textBox21.Text); 
       cmd.Parameters.Add("@value2", textBox23.Text); 
       cmd.Parameters.Add("@value3", textBox1.Text); 
       cmd.Parameters.Add("@value4", textBox2.Text); 
       cmd.Parameters.Add("@value5", textBox3.Text); 
       cmd.Parameters.Add("@value6", Convert.ToString(comboBox4.SelectedItem)); 
       cmd.Parameters.Add("@value7", Convert.ToString(comboBox2.SelectedItem)); 
       cmd.Parameters.Add("@value8", Convert.ToString(comboBox1.SelectedItem)); 
       cmd.Parameters.Add("@value9", textBox5.Text); 
       cmd.Parameters.Add("@value10", textBox13.Text); 
       cmd.Parameters.Add("@value11", textBox19.Text); 
       cmd.Parameters.Add("@value12", textBox22.Text); 
       cmd.Parameters.Add("@value13", textBox6.Text); 
       cmd.Parameters.Add("@value14", textBox7.Text); 
       cmd.Parameters.Add("@value15", textBox8.Text); 
       cmd.Parameters.Add("@value16", textBox9.Text); 
       cmd.Parameters.Add("@value17", textBox10.Text); 
       cmd.Parameters.Add("@value18", textBox11.Text); 
       cmd.Parameters.Add("@value19", textBox12.Text); 
       cmd.Parameters.Add("@value20", richTextBox1.Text); 
       cmd.Parameters.Add("@value21", richTextBox2.Text); 
       cmd.Parameters.Add("@value22", richTextBox3.Text); 
       cmd.Parameters.Add("@value23", textBox4.Text); 
       cmd.Parameters.Add("@value24", Convert.ToDouble(textBox14.Text)); 
       cmd.Parameters.Add("@value25", Convert.ToDouble(textBox15.Text)); 
       cmd.Parameters.Add("@value26", Convert.ToDouble(textBox16.Text)); 
       cmd.Parameters.Add("@value27", Convert.ToInt32(textBox17.Text)); 
       cmd.Parameters.Add("@value28", Convert.ToInt32(textBox18.Text)); 
       cmd.Parameters.Add("@value29", textBox5.Text + "_qr.png"); 
       cmd.ExecuteScalar(); 

和數據庫:

create table client_tbl(client_file_no int not null auto_increment primary key, 
          client_date_of_creation varchar(20), 
          client_referral_code varchar(60), 
          client_first_name varchar(20), 
          client_second_name varchar(20), 
          client_last_name varchar(20), 
          client_nationality varchar(60), 
          client_sex varchar(10), 
          client_status varchar(20), 
          client_civil_id varchar(30), 
          client_birthday varchar(20), 
          client_born_year varchar(20), 
          client_occupation varchar(30), 
          client_preferred_language varchar(30), 
          client_email varchar(40), 
          client_tel_mobile varchar(20), 
          client_tel_work1 varchar(20), 
          client_tel_work2 varchar(20), 
          client_tel_home2 varchar(20), 
          client_address1 varchar(512), 
          client_address2 varchar(512), 
          client_notes varchar(512), 
          client_cc varchar(50), 
          client_credit float, 
          client_debit float, 
          client_debitmax float, 
          client_stat int, 
          client_pricetype int, 
          client_rq_code varchar(80)); 
+1

什麼是文本框的值?作爲一個建議,我會嘗試正確地命名你的參數,以及你的文本框。 –

+0

你有什麼異常嗎?從上面的代碼中不清楚在異常情況下會發生什麼。並嘗試使用ExecuteNonQuery插入命令.... – Steve

+0

我的連接器出現問題。我改變了它,一切正常。謝謝大家 –

回答

1

嘗試AddWithValue

command.Parameters.AddWithValue("@value1", textBox21.Text); 
+0

你好,當我使用AddWithValue()時,這是我得到的錯誤。我是否需要導入一些額外的軟件包? \t「MySql.Data.MySqlClient.MySqlParameterCollection」不包含關於「AddWithValue」和沒有擴展方法「AddWithValue」接受類型「MySql.Data.MySqlClient.MySqlParameterCollection」的第一個參數的定義可以找到(是否缺少使用指令或程序集引用?) –

+1

@KshitijThube這不應該是最新版本的MySql連接器。你用什麼版本的連接器?或者你使用一個不同的ADO.NET提供程序用於MySql? – Steve

+0

終於!我的連接器是「錯誤」,導致所有的錯誤。謝謝大家的幫助。 –

0

通過改變我的連接器解決的問題(原來我的連接器是錯誤的) 謝謝大家的幫助 問候, Kshitij Thube