2015-09-30 42 views
0

這是我爲更新表格醫生所做的代碼。代碼沒有錯誤,我確定表格數據類型是可以的;數據類型被設置爲自動編號,而其他類型被設置爲短文本。標準表達式中的數據類型不匹配,即使代碼完美時仍然存在錯誤

此外,我知道這段代碼會影響sql注入,我應該使用參數來做到這一點,但這樣做是可能的,並且有一個我無法解決的錯誤,我需要知道錯誤的解決方案當我更新表格時我會得到。

錯誤:

data type mismatch in criteria expression

我使用Access 2013和Visual Studio 2013年

private void button6_Click(object sender, EventArgs e) 
    { 
     try 
     { 

      OleDbConnection cone = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\\dev\\assignt_soft\\healthline_\\healthline_\\healthline_db.accdb"); 
      OleDbCommand come = new OleDbCommand("UPDATE doctorss set Doctor_Name='"+textBox3.Text+"', dspecial='"+comboBox4.Text+"', dday= '"+comboBox3.Text+"', dtime= '"+textBox2.Text+"' where Doctor_ID='" + textBox4.Text+"';"); 
      come.Connection = cone; 
      cone.Open(); 
      come.ExecuteNonQuery(); 
      cone.Close(); 
      MessageBox.Show("Doctor updated"); 

      OleDbConnection cont = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\\dev\\assignt_soft\\healthline_\\healthline_\\healthline_db.accdb"); 
      OleDbCommand comt = new OleDbCommand("select * from doctorss", cont); 
      DataTable dte = new DataTable(); 
      cont.Open(); 
      dte.Load(comt.ExecuteReader()); 
      dataGridView1.DataSource = dte; 
      cont.Close(); 

      return; 

     } 

     catch (OleDbException expee) 
     { MessageBox.Show(expee.Message); } 
    } 
+1

如果' Doctor_ID'是一個數字爲什麼你有報價圍繞你比較的價值嗎? SQL參數可幫助您避免此類問題以及sql注入。 – juharr

+0

一次將您的SQL更新分解爲一個或兩個字段,並查看哪一個導致錯誤。我敢打賭,「dtime」字段的格式不正確。 – AlG

回答

0

I have made sure that the table data types are ok

因爲Doctor_ID被自動編號,你不應該使用引號

 OleDbCommand come = new OleDbCommand("UPDATE doctorss set 
          Doctor_Name='"+textBox3.Text+"', 
          dspecial='"+comboBox4.Text+"', 
          dday= '"+comboBox3.Text+"', 
          dtime= '"+textBox2.Text+"' 
          where Doctor_ID=" + textBox4.Text+";"); 
相關問題