gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:42 25 4
gpt4 key购买 nike

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

我在这里找到了很多与我的问题相关的帖子,但是我正在努力找出我到底需要更改什么才能解决我从 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();

我确信我已经非常接近让它工作了,但我不知道从这里到哪里去......出现的错误是

'Data type mismatch in criteria expression.'

最佳答案

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

这是错误的。如果您的 ID 列是数字,则无需使用单引号。

你为什么不将它也添加为参数,因为你为其他人做了?喜欢;

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

也可以使用 using statement处理您的 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();
}

关于c# - 在 C# 应用程序中更新 MS Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22965183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com