繁体   English   中英

在C#应用程序中更新MS Access数据库

[英]Updating MS Access Database in C# Application

在此先感谢您的帮助或建议。

我在这里找到了许多与我的问题有关的帖子,但是我正在努力寻找确切需要更改的内容,以解决从C#应用程序更新MS Access数据库的问题。 因此,如果人们认为这篇文章与其他人过于相似,我深表歉意。

这是我的更新代码:

OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\DATA2\Nescot Students\Y13\s0234438\dboCanada.accdb";
conn.Open();

string query = "UPDATE Products SET [Product_Name] = @ProName, [Product_Description] = @ProDes, [Standard_Cost] = @StaCos, [Category] = @Cat, [List_Price] = @LisPri  WHERE ID = '" + Convert.ToInt16(lblID.Text) + "'";
OleDbCommand cmd = new OleDbCommand(query, conn) /*{ CommandType = CommandType.Text }*/;
cmd.Parameters.AddWithValue("@ProName", txtProducts.Text);
cmd.Parameters.AddWithValue("@ProDes", txtDescription.Text);
cmd.Parameters.AddWithValue("@StaCos", Convert.ToDecimal(txtPrice.Text));
cmd.Parameters.AddWithValue("@Cat", txtCat.Text);
cmd.Parameters.AddWithValue("@LisPri", Convert.ToDecimal(txtListPrice.Text));

int rowsAffected = cmd.ExecuteNonQuery();
conn.Close();

我敢肯定,我已经很接近将其付诸实践,但我不知道从这儿去哪里...出现的错误是

“条件表达式中的数据类型不匹配。”

WHERE ID = '" + Convert.ToInt16(lblID.Text) + "'"

错了 如果您的ID列为数字,则无需使用单引号。

为什么不为其他参数添加参数呢? 喜欢;

..WHERE ID = @id;
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(lblID.Text));

也可以使用using语句来处理OleDbConnectionOleDbCommand

string ConnString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\DATA2\Nescot Students\Y13\s0234438\dboCanada.accdb";
using(OleDbConnection conn = new OleDbConnection(ConnString ))
using(OleDbCommand cmd = conn.CreateCommand())
{
   cmd.CommandText = @"UPDATE Products SET [Product_Name] = @ProName, [Product_Description] = @ProDes, [Standard_Cost] = @StaCos, [Category] = @Cat, [List_Price] = @LisPri  WHERE ID = @id";
   cmd.Parameters.AddWithValue("@ProName", txtProducts.Text);
   cmd.Parameters.AddWithValue("@ProDes", txtDescription.Text);
   cmd.Parameters.AddWithValue("@StaCos", Convert.ToDecimal(txtPrice.Text));
   cmd.Parameters.AddWithValue("@Cat", txtCat.Text);
   cmd.Parameters.AddWithValue("@LisPri", Convert.ToDecimal(txtListPrice.Text));
   cmd.Parameters.AddWithValue("@id", Convert.ToInt32(lblID.Text));

   conn.Open();
   int rowsAffected = cmd.ExecuteNonQuery();
   conn.Close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM