[英]C# access database error
此代碼在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
。
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)
}
您沒有關閉數據庫連接,而是嘗試使用Parameter而不是串聯(Probe to SQL Injection)。
捕獲您的錯誤消息,並使用StackTrace對其進行跟蹤。 嘗試使用Using
語句正確處理對象。
看起來像個小錯誤...
您必須先打開數據庫連接,然后才能對其執行查詢。
conn=new conn(db param);
try
{
conn.open()
}
catch(Exception e)
{
e.getMessage();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.