C# 试图创建一个表单,以便更新已搜索的记录

C# 试图创建一个表单,以便更新已搜索的记录,c#,C#,我已经创建了一个表单,我可以在access数据库中搜索记录,然后选择存档,但是我似乎无法让更新脚本实际更新上面查询中返回的记录 有人能帮忙吗 谢谢 private void button2_Click(object sender, EventArgs e) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.

我已经创建了一个表单,我可以在access数据库中搜索记录,然后选择存档,但是我似乎无法让更新脚本实际更新上面查询中返回的记录

有人能帮忙吗

谢谢

    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

您忘记了
命令。ExecuteOnQuery()在您的更新中

OleDbCommand command = new OleDbCommand("UPDATE tblContacts SET Archived = 1 WHERE CustID = @ID");
command.Parameters.Add(new OleDbParameter("@ID", customid));
command.ExecuteNonQuery();

谢谢你的评论!不幸的是,这仍然不起作用-它现在也不会在搜索框中返回任何值