0

このコードは、MS-Access で使用するとプロパティで実行および更新されますが、データベースを介して使用すると構文エラーが発生します

string item = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();

string h="update Follow_Date set Current_Date='" + dateTimePicker1.Value.ToLongDateString() + "', Current_Time='" + dateTimePicker3.Value.ToLongTimeString() + "', Type='" +
                            comboBox1.SelectedItem.ToString() + "', Remarks='" +
                            textBox1.Text + "', Next_Follow_Date='" + dateTimePicker2.Value.ToLongDateString()+ "' where Follow_Id='" +
                            item.ToString() +"'";

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\lernovo\Documents\JDB.mdb");

con.Open();

OleDbCommand cmd = new OleDbCommand(h, con);
cmd.ExecuteNonQuery();

エラーはsyntax errorです。

4

2 に答える 2

3
string item = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();

string h="update Follow_Date set @Current_Date, @Current_Time, @Type, @Remarks, @Next_Follow_Date where @Follow_Id";

try
{
Using (OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\lernovo\Documents\JDB.mdb"))
{
  con.Open();

  Using (OleDbCommand cmd = new OleDbCommand(h, con))
  {    
    cmd.Parameters.Add("Current_Date", dateTimePicker1.Value.ToLongDateString());
    cmd.Parameters.Add("Current_Time", dateTimePicker3.Value.ToLongTimeString());
    cmd.Parameters.Add("Remarks", textBox1.Text);
    cmd.Parameters.Add("Type", comboBox1.SelectedItem.ToString());
    cmd.Parameters.Add("Next_Follow_Date", dateTimePicker2.Value.ToLongDateString());
    cmd.Parameters.Add("Follow_Id", item.ToString());
    cmd.ExecuteNonQuery();
  }
}
}
catch(SQLException ex)
{
System.Console.WriteLine(ex.Message, ex.StackaTrace)
}

データベース接続を閉じておらず、連結の代わりにパラメーターを使用しようとしています (Probe to SQL Injection)。

エラー メッセージをキャッチし、StackTrace を使用してトレースします。Usingステートメントを使用して、オブジェクトを適切に破棄してください。

于 2013-07-06T07:01:05.657 に答える
0

些細なミスに見える…

クエリを実行する前に、db 接続を開く必要があります。

conn=new conn(db param);
try
{
  conn.open()
}
catch(Exception e)
{
  e.getMessage();
}
于 2013-07-06T06:39:47.817 に答える