试图创建一个表格,在那里我可以更新已搜索的记录
本文关键字:更新 我可以 在那里 搜索 记录 表格 创建 一个 | 更新日期: 2023-09-27 17:57:39
我创建了一个表单,可以在其中搜索访问数据库中的记录,然后选择存档,但我似乎无法获得更新脚本来实际更新上面查询中返回的记录。
有人能帮忙吗?
感谢
private void button2_Click(object sender, EventArgs e)
{
System.Data.OleDb.OleDbConnection conn = new
System.Data.OleDb.OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BoilerSvc_be.mdb";
try
{
conn.Open();
OleDbCommand command = new OleDbCommand("SELECT * FROM Contacts WHERE Archived = 0 AND (Surname = '" + textBox3.Text + "' OR Initial = '" + textBox3.Text + "' OR [Post Town] = '" + textBox3.Text + "' OR [Post Code] = '" + textBox3 + "')", conn);
command.Parameters.Add(new OleDbParameter("@Name", textBox3));
OleDbDataReader reader = command.ExecuteReader();
LoopThroughRecs(reader);
// Insert code to process data.
}
finally
{
conn.Close();
}
}
private void LoopThroughRecs(OleDbDataReader Data)
{
if (Data.Read())
{
customid.Text = Data["CustID"].ToString();
FirstName.Text = Data["Initial"].ToString();
LastName.Text = Data["Surname"].ToString();
Address1.Text = Data["Address 1"].ToString();
Address2.Text = Data["Address 2"].ToString();
Address3.Text = Data["Address 3"].ToString();
TownCity.Text = Data["Post Town"].ToString();
PostCode.Text = Data["Post Code"].ToString();
Telephone.Text = Data["Telephone"].ToString();
}
}
private void button3_Click(object sender, EventArgs e)
{
System.Data.OleDb.OleDbConnection conn = new
System.Data.OleDb.OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BoilerSvc_be.mdb";
try
{
conn.Open();
OleDbCommand command = new OleDbCommand("UPDATE tblContacts SET Archived = 1 WHERE CustID = "CustID");
command.Parameters.Add(new OleDbParameter("@ID", customid));
}
finally
{
customid.Text = null;
FirstName.Text = null;
LastName.Text = null;
Address1.Text = null;
Address2.Text = null;
Address3.Text = null;
TownCity.Text = null;
PostCode.Text = null;
Telephone.Text = null;
conn.Close();
MessageBox.Show("Customer Archived");
}
}
}
}
您的更新命令似乎不正确。试试这个:
OleDbCommand command = new OleDbCommand("UPDATE tblContacts SET Archived = 1 WHERE CustID = @ID");
command.Parameters.Add(new OleDbParameter("@ID", customid));
同时尝试在select
语句中使用参数,以避免SQL注入:
"SELECT * FROM Contacts WHERE Archived = 0 AND (Surname = @Name OR..."
command.Parameters.Add(new OleDbParameter("@Name", textBox3.Text));
//And also for other
您在更新中忘记了command.ExecuteNonQuery();
。
OleDbCommand command = new OleDbCommand("UPDATE tblContacts SET Archived = 1 WHERE CustID = @ID");
command.Parameters.Add(new OleDbParameter("@ID", customid));
command.ExecuteNonQuery();