gpt4 book ai didi

c# - 如何更新 MS Access 数据库

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:55 29 4
gpt4 key购买 nike

我需要一个简单的程序来更新 MS Access 数据库字段。我关注了一个online tutorial这很简单并且代码有效。但是当我重新实现它时它似乎不再起作用了。这是我的代码。

 public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

OleDbConnection conn;
OleDbDataAdapter da;
DataSet ds;
OleDbCommandBuilder cb;
DataRow row;

private void Form1_Load(object sender, EventArgs e)
{
conn = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source = C:\\test.mdb");
da = new OleDbDataAdapter("select* from user", conn);
ds = new DataSet();

conn.Open();
da.Fill(ds, "user");
conn.Close();
}

private void button1_Click(object sender, EventArgs e)
{
cb = new OleDbCommandBuilder(da);
row = ds.Tables["user"].Rows[0];

row[3] = "hello";

da.Update(ds, "user");
}
}

user 是我的数据库的表名。我尝试做的是用字符串 hello 更新字段 row[0](第一行)和 column[3](第 4 列)。我得到的错误是 Synatx error in FROM 子句。上网阅读后,我发现 user 必须放在方括号中。所以我做了这个。

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

OleDbConnection conn;
OleDbDataAdapter da;
DataSet ds;
OleDbCommandBuilder cb;
DataRow row;

private void Form1_Load(object sender, EventArgs e)
{
conn = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source = C:\\test.mdb");
da = new OleDbDataAdapter("select* from [user]", conn);
ds = new DataSet();

conn.Open();
da.Fill(ds, "user");
conn.Close();
}

private void button1_Click(object sender, EventArgs e)
{
cb = new OleDbCommandBuilder(da);
row = ds.Tables["user"].Rows[0];

row[3] = "hello";

da.Update(ds, "user");
}
}

当我这样做时,我收到一个新错误,UPDATE 语句中的语法错误。我做了很多互联网阅读,但似乎都没有解决这个问题。他们都以不同的方式使用了 Update 命令。我只知道这样。我的代码有什么问题?特别是因为这以前有效。或者这不是更新适当技术的方式吗?请帮助我使用代码而不是我不遵循的技术术语。或者任何其他程序来更新 ms 访问?

谢谢。

最佳答案

我以前从未尝试过使用 .NET DataSet 访问 Access 数据库,但我认为您可以将 button1_Click 中的代码替换为如下代码:

private void button1_Click(object sender, EventArgs e)
{
conn.Open();

string query = "UPDATE [user] SET [columnname] = ? WHERE id = ?";
var accessUpdateCommand = new OleDbCommand(query, conn);
accessUpdateCommand.Parameters.AddWithValue("columnname", "hello");
accessUpdateCommand.Parameters.AddWithValue("id", 123); // Replace "123" with the variable where your ID is stored. Maybe row[0] ?
da.UpdateCommand = accessUpdateCommand;
da.UpdateCommand.ExecuteNonQuery();

conn.Close();
}

是的,我知道您会失去 DataSet 的一些好处,但研究表明常规的 OleDbDataAdapter.Update 函数不能很好地与访问权限。

关于c# - 如何更新 MS Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436049/

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