我已将强类型数据库(MySQl)添加到C#(。net 3.5)项目中。数据库(DB.Electrophysiology_Data)有几个关系表,但基本上我想在'files'表中添加一个新的'filesRow'。我使用类似下面的代码。
DB.Electrophysiology_Data.filesRow new_file = ds.files.NewfilesRow();
...设置new_file的值(例如,filename,creationdate等)
ds.files.AddfilesRow(new_file);
...最终我通过DataAdaptor更新了数据库
file_adaptor.Update(ds.files)
问题是AutoIncrement列(FileID)设置为-1。关闭我的应用程序并重新启动后,我看到新的filesRow已添加到数据库ok,现在有一个适当的FileID值(大约5000,因为我已经在文件DataTable中有这么多行了。)
是否有办法使用强类型数据库对象(DataSet,DataTable等)了解数据库设置的FileID值。
感谢您的帮助, 皮特
答案 0 :(得分:1)
为了使适配器在插入新记录后立即从数据库中检索自动生成的ID,您需要执行SELECT。
在My SQL中您可以使用LAST_INSERT_ID()SQL函数检索最新的AUTO_INCREMENT值
如果stong类型数据集中的“配置查询向导”无法以正确方式生成MySQL查询,则可以手动编辑INSERT命令并在此处添加SELECT子句 通常,如果您的命令看起来像
insert my_table (field1, field2, ...) values (@field1, @field2, ...)
select id, field1, field2 ... from my_table where id = LAST_INSERT_ID()
如您所见,我们不仅要选择ID而且还要选择其他字段,以便从表中获取最后一个值(如果存在任何默认值,则可能与数据集中的值不同)。