如何编写正确的插入/更新/删除命令来更新源访问数据库中的链接表?

时间:2015-07-07 07:23:33

标签: c# database oledb ole oledbcommand

我必须使用MS Access。

我有这种结构的数据库(不要介意奇怪的名字 - 它几乎没有翻译过这个问题):

enter image description

我的程序显示其中一个表(在WinForms中)。用户可以更改其中的数据。要发送更改的数据,我使用按钮。

这是问题所在。如果我使用OleDbCommandBuilder生成命令,按下保存按钮后会出现错误(如果表中的内容已更改)。

所以,如果我在desease表中改变了一些东西:DataTable" table"不包括DataColumn"患者ID"对于这个SourceColumn"患者ID" (错误文本被翻译,所以可能看起来有点不同)。

如果我在访问表中更改某些内容:语法错误INSERT INTO。关于UPDATE和DELETE等等。

看起来我必须手动编写命令。但我不明白该怎么做。 MSDN示例并非如此。

所以,请帮助我为表格和#34;访问"撰写正确的命令。和" 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
}

猜猜,不需要加载代码。

1 个答案:

答案 0 :(得分:0)

这个想法可能是错误的。最好为MS Access寻找替代方案。