2013-02-27 55 views
-3

我有一個數據庫,我使用MS ACCESS 2007.我想通過文本框插入數據到數據庫。我有下面的代碼,但我得到錯誤。我不能在ms訪問數據庫通過文本框插入數據

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\Sisc-stronghold\mis!\wilbert.beltran\DataBase\DataStructure.accdb"); 

private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       OleDbCommand cmd = new OleDbCommand(); 
       cmd.CommandType = CommandType.Text; 
       cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + "VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')"; 
       cmd.Parameters.AddWithValue("@Username", textBox1.Text); 
       cmd.Parameters.AddWithValue("@Password", textBox2.Text); 
       cmd.Connection = con; 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
      } 
      catch (Exception ex) 
      { 
       textBox1.Text = ex.ToString(); 
      } 

,這裏是錯誤

System.Data.OleDb.OleDbException:在INSERT INTO語句的語法錯誤。 在System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult小時) 在System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult在System.Data.OleDb.OleDbCommand.ExecuteCommandText(tagDBPARAMS dbParams,對象&的ExecuteReuslt) (對象&的ExecuteReuslt) 在System.Data.OleDb.OleDbCommand.ExecuteCommand(的CommandBehavior行爲,對象&的ExecuteReuslt) 在System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(的CommandBehavior行爲,字符串方法) 在System.Data.OleDb.OleDbCommand.ExecuteNonQuery()在C:\ Documents and Settings \ 12-014s \ My Documents \ applications \ Database \ WindowsFormsApplication中的VirginiTEAcorp.Form3.button1_Click(Object sender,EventArgs e)上的 1個\ Form3.cs:行34

+1

「但我得到錯誤。」 - 什麼錯誤? – 2013-02-27 06:51:00

+2

您已經創建了參數,但沒有使用它們! .....爲什麼? – 2013-02-27 06:51:54

+0

@MitchWheat - 感謝提醒。 – lexter 2013-02-27 06:53:16

回答

1

也許你可以試試這個代碼

private void button1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      cmd = new OleDbCommand(); 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "INSERT INTO userinfo (FirstName, LastName, Age, Address, Course)" + "VALUES (@First_Name, @Last_Name, @Age, @Address, @Course)"; 
      cmd.Parameters.AddWithValue("@First_Name", textBox1.Text); 
      cmd.Parameters.AddWithValue("@Last_Name", textBox2.Text); 
      cmd.Parameters.AddWithValue("@Age", textBox3.Text); 
      cmd.Parameters.AddWithValue("@Address", textBox5.Text); 
      cmd.Parameters.AddWithValue("@Course", textBox5.Text); 
      cmd.Connection = conn; 
      conn.Open(); 
      clear(); 
      cmd.ExecuteNonQuery(); 
      { 
       MessageBox.Show("Data Added!"); 
       conn.Close(); 
      } 
      dataholder(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 

如果你會聲明參數。你可能不得不以某種方式使用它們。希望它有助於:)

+0

:)非常感謝。有用。 – lexter 2013-02-28 01:39:14

1

您已經聲明參數,但沒有使用過,如果你使用下面的語句則沒有必要使用參數

cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + "VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')"; 

但是,如果你想使用的參數,然後你neeed改變的CommandText如下...

cmd.CommandText = "INSERT INTO Accountstbl (Username, Password) VALUES (@UserName,@Password)"; 
+1

SQL注入任何人? – 2013-02-27 07:00:56

+0

@Amol Kolekar - 非常感謝。它的作品:) – lexter 2013-02-27 07:06:03

+0

@bert:不客氣 – 2013-02-27 07:23:58