我知道这看起来很简单,但似乎不起作用。我在 MsAccess 数据库中有一个表是空的,但它在某些时候确实有一些记录,当我执行 DataTable.NewRow 时,它返回一个新行,其中 objectid 字段为 0(自动增量字段)。在我将这个新行提交到数据库之后,它的 objectid 为 84(或者它认为下一个数字应该是什么),但我需要在提交之前有正确的 objectid 值,因为它在连接表中使用。如果我的数据表上至少有 1 条记录并执行 datatable.NewRow,那么新行的 objectid 将是正确的 84。这是我用来获取数据表的代码:
string sSQL = "Select * from <tableName>"
IDbDataAdapter dbAdapter = GetDataAdapter(sSQL);
dbAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
if (DbConnection.State == ConnectionState.Closed)
DbConnection.Open();
try
{
DataAdapterFill(dbAdapter, dataSet, sTableName);
}
catch (OleDbException oledbEx)
{
if (oledbEx.Message.Contains("No value given for one or more required parameters"))
throw new Exception(string.Format("Where clause {0} contains correct fields for table {1}", sWhereClause, sTableName), oledbEx);
else
throw oledbEx;
}
catch
{
DbConnection.Close();
((IDisposable)dbAdapter).Dispose();
throw;
}
dbAdapter.TableMappings.Add(sTableName, sTableName);
dataTable = dataSet.Tables[0];