我已经被困在这一段时间了,所以我希望有人可以帮我解决这个问题。
我有一个Access数据库。它是一个旧的,我想尽快用SQL Server替换它,但出于实际原因,我现在需要使用这个。 在我的应用程序中,我有一个datagridview。在这里,我从Access数据库加载数据,用户可以更改它。到目前为止一切都很好。
然后我有一个Save按钮供用户提交他的更改。通常,我会使用此代码:
//Data adapter initialized with a select-command when the gridview was filled.
OdbcDataAdapter adapter;
OdbcCommandBuilder builder = new OdbcCommandBuilder(adapter);
adapter.Udpate(table);
但是,现在我收到错误消息"Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key"
,这是因为我的数据库没有主键(每个ID包含多个条目,因此无法成为有效的PK)。
所以我想我自己写了一个更新命令:
OdbcCommand updateCommand = new OdbcCommand("UPDATE myTable SET name = ?, mobile = ?, notes = ? WHERE id = ?", connection);
updateCommand.Parameters.Add("@name", OdbcType.NVarChar).Value = ???
updateCommand.Parameters.Add("@mobile", OdbcType.NVarChar).Value = ???
updateCommand.Parameters.Add("@notes", OdbcType.NVarChar).Value = ???;
updateCommand.Parameters.Add("@id", OdbcType.Int).Value = ID_is_known;
adapter.UpdateCommand = updateCommand;
但是,我不知道该怎么做才能进入' ???的参数。由于它是一个通用的update-command,我无法使用datagridview中的行。
有人可以帮我完成updateCommand吗?或者我完全走错了路,是否有更好/更容易的解决方案呢?提前谢谢!