如何编写正确的 insert/update/delete 命令来更新源访问数据库中的链接表?
How to compose proper insert/update/delete commands to update linked tables in source access database?
我必须使用 MS Access。
我有这种结构的数据库(不要介意奇怪的名字——这个问题几乎没有翻译):
我的程序显示其中一个 table(在 WinForms 中)。用户可以更改其中的数据。要发送更改的数据,我使用按钮。
问题来了。如果我使用 OleDbCommandBuilder 生成命令,我会在按下保存按钮后收到错误消息(如果 table 中发生了某些更改)。
所以,如果我在 desease table 中更改某些内容:DataTable "table" 不包含此 SourceColumn "patient ID" 的 DataColumn "patient ID"(错误文本已翻译,因此可能看起来有点不同)。
如果我在访问中更改某些内容 table:语法错误 INSERT INTO。等等更新和删除。
看来我必须手动编写命令。但我不知道该怎么做。 MSDN 示例并没有真正帮助。
所以,请帮助我为 tables "visits" 和 "desease" 编写正确的命令。或者至少描述一下如何编写它。
如果没有我的表格代码,如果有什么不清楚的话:
protected string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";
protected OleDbConnection connection = new OleDbConnection();
protected OleDbDataAdapter adapter;
protected OleDbCommandBuilder cBuilder;
DataSet dataSet;
public Form1() {
InitializeComponent();
connection.ConnectionString = conStr;
adapter = new OleDbDataAdapter("SELECT * FROM TABLE_NAME", connection);
dataSet = new DataSet();
cBuilder = new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet);
connection.Open();
adapter.UpdateCommand = cBuilder.GetUpdateCommand(true);
adapter.InsertCommand = cBuilder.GetInsertCommand(true);
adapter.DeleteCommand = cBuilder.GetDeleteCommand(true);
connection.Close();
}
private void saveButton_Click(object sender, EventArgs e) {
adapter.Update(dataSet); //this method send data to database and return error
}
猜测,不需要加载代码。
这个想法很可能是错误的。最好为 MS Access 寻找一些替代品。
我必须使用 MS Access。
我有这种结构的数据库(不要介意奇怪的名字——这个问题几乎没有翻译):
我的程序显示其中一个 table(在 WinForms 中)。用户可以更改其中的数据。要发送更改的数据,我使用按钮。
问题来了。如果我使用 OleDbCommandBuilder 生成命令,我会在按下保存按钮后收到错误消息(如果 table 中发生了某些更改)。
所以,如果我在 desease table 中更改某些内容:DataTable "table" 不包含此 SourceColumn "patient ID" 的 DataColumn "patient ID"(错误文本已翻译,因此可能看起来有点不同)。
如果我在访问中更改某些内容 table:语法错误 INSERT INTO。等等更新和删除。
看来我必须手动编写命令。但我不知道该怎么做。 MSDN 示例并没有真正帮助。
所以,请帮助我为 tables "visits" 和 "desease" 编写正确的命令。或者至少描述一下如何编写它。
如果没有我的表格代码,如果有什么不清楚的话:
protected string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";
protected OleDbConnection connection = new OleDbConnection();
protected OleDbDataAdapter adapter;
protected OleDbCommandBuilder cBuilder;
DataSet dataSet;
public Form1() {
InitializeComponent();
connection.ConnectionString = conStr;
adapter = new OleDbDataAdapter("SELECT * FROM TABLE_NAME", connection);
dataSet = new DataSet();
cBuilder = new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet);
connection.Open();
adapter.UpdateCommand = cBuilder.GetUpdateCommand(true);
adapter.InsertCommand = cBuilder.GetInsertCommand(true);
adapter.DeleteCommand = cBuilder.GetDeleteCommand(true);
connection.Close();
}
private void saveButton_Click(object sender, EventArgs e) {
adapter.Update(dataSet); //this method send data to database and return error
}
猜测,不需要加载代码。
这个想法很可能是错误的。最好为 MS Access 寻找一些替代品。