如何在不改变现有数据的情况下更新数据c# ms访问

本文关键字:数据 情况下 更新 访问 ms 改变 | 更新日期: 2023-09-27 18:15:01

当我想更新而不改变旧数据时,我得到这个错误

查询表达式data中的语法错误(缺少运算符)。[电话号码]+ ' ' +0770444 +'.

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "''db''it.accdb");
con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "UPDATE data SET data.[Phone Number] = data.[Phone Number]+ ' ' +"+textBox23.Text+" +  WHERE data.([ID]) = " + textBox15.Text + " ";
cmd.Connection = con;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt;
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
MessageBox.Show("Data Updated Successfully");
con.Close();

如何在不改变现有数据的情况下更新数据c# ms访问

开始使用命令参数,您将避免这样的问题:

cmd.CommandText = @"UPDATE data SET [Phone Number] = [Phone Number] + ' ' + @NewPhoneNumber WHERE ID = @ID ";
cmd.Parameters.AddWithValue("@ID", textBox15.Text);
cmd.Parameters.AddWithValue("@NewPhoneNumber", textBox23.Text);
cmd.Connection = con;

这也将保护您免受Sql注入。请注意,您应该为控件(文本框)提供适当的命名,这些名称对其他程序员来说没有任何意义。把你的专栏写在一起PhoneNumber总是逃避它们是很烦人的,你正在无缘无故地为自己创造更多的工作。

其他点包装您的OleDbConnection和OleDbDataAdapter在使用块

using(OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "''db''it.accdb"))
{
    con.Open();
    //... stuff
    DataTable dt;
    using(OleDbDataAdapter da = new OleDbDataAdapter(cmd))
    {
         //stuff relate to db adapter
    }
}

使用is表示try/catch/finally,在finally块中调用Dispose()。这将保护,如果您的代码有一个异常,您的连接将被关闭。在您当前的格式中,这不会发生。

OleDbDataAdapter正在使用非托管资源,因此Dispose()也应该使用。

您的命令似乎是错误的,应该是

cmd.CommandText = "UPDATE data SET data.[Phone Number] = " + "'" + data.[Phone Number] + textBox23.Text + "' WHERE data.([ID]) = " + textBox15.Text;

然而,我们总是建议我们应该使用参数化查询而不是字符串concat。

谢谢大家,我解决了这个

OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "UPDATE data  SET [Phone Number] = [Phone Number]+'n'" + textBox3.Text + "' WHERE ID = " + textBox15.Text + " ";
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("New Number Inserted Successfully to ID " + textBox15.Text);
con.Open();
相关文章: