2012-02-11 7 views
2

データベースを更新しようとしています。つまり、MS Accessファイルです。テキストボックスから値を取得してテーブルを更新したいのですが、適切なクエリを作成できません。値を更新するクエリ

誰でも適切な更新クエリを書くのを助けてくれますか?

string strconn4 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|pay.accdb"; 

OleDbConnection sqlconn4 = new OleDbConnection(strconn4); 
sqlconn4.Open();  
OleDbCommand ocmd = new OleDbCommand("UPDATE fees SET fname=" + Convert.ToString(textBox2.Text) + ",lname=" + Convert.ToString(textBox3.Text) + ",amtpayd=" + Convert.ToString(textBox4.Text) + ",amtleft=" + Convert.ToString(textBox5.Text) + ",disc=" + Convert.ToString(textBox6.Text) + ",pdate=" + Convert.ToString(dateTimePicker3.Text) + ",rdate=" + Convert.ToString(dateTimePicker1.Text) + ",WHERE memid=" + Convert.ToString(textBox1.Text), sqlconn4); 
+4

試したクエリとそれが発生しているエラーを投稿してください。 (そして、基礎となるテーブルについての十分な情報があれば、人々はあなたがしようとしていることを理解することができます。) – Mat

+1

また、SELECTクエリを投稿すると、 –

+0

hii私の問題を更新しました...私を助けてください。 –

答えて

1

コードはSQL injectionになりがちです。これは非常に深刻なセキュリティ上の問題です。

代わりにパラメータ化クエリを使用する必要があります。

参照やサンプルを含むこのようなクエリを構築する方法についていくつかのリンク:

0
このよう

string sql=string.Format("UPDATE Table1 SET column1='{0}',column2='{1}' where id={2}",tbx1.text,tbx2.text,tbx3.text); 
    SqlConnection conn = new SqlConnection(); 
    conn.ConnectionString = strconn4; 
     SqlCommand cmd = new SqlCommand(); 
      cmd.CommandText = sql; 
      cmd.Connection = conn; 
    conn.Open(); 
    cmd.ExecuteNonQuery(); 
    conn.Close();