就您的 PRIMARY KEY 问题而言,这就是我构建简单表格的方式,并且它在插入、更新、选择和删除方面都可以正常工作
CREATE TABLE [dbo].[INVENTORY](
[id] [int] IDENTITY(1,1) NOT NULL,
[L1] [varchar](20) NOT NULL,
[L2] [varchar](20) NOT NULL,
[L3] [varchar](20) NOT NULL,
[L4] [varchar](12) NULL,
[L5] [varchar](4) NULL,
[L6] [datetime] NULL,
[L7] [bit] NOT NULL,
[L8] [bit] NOT NULL,
[L9] [varchar](4) NULL,
[L10] [varchar](4) NULL)
现在,就代码而言,听起来您需要创建一个全局 DataAdapter 并将其重新用于数据库后端连接。我将假设您使用的是 SQL。我没有看到你的代码,但你不应该在你的 INSERT 或 UPDATE 命令中引用你的主键,因为我假设你的 PRIMARY KEY 是自动递增的而不是 NULL。首先使用您的 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 创建一个 DataAdapter。下面的例子只显示了 SelectCommand,但 Update/Insert/DeleteCommand 都一样,你只需要使用正确的 SQL 命令语法。
private void ReadDB()
{
try
{
string connectionString = "server=(local)\\SQLEXPRESS;" +
"Trusted_Connection=yes; database=INVENTORY";
myConnection = new SqlConnection(connectionString);
myConnection.Open();
myDataSet = new DataSet();
myDataSet.CaseSensitive = true;
DataAdapter = new SqlDataAdapter();
DataAdapter = CreateInventoryAdapter();
DataAdapter.TableMappings.Add("Table", "INVENTORY");
DataAdapter.Fill(myDataSet);
} catch (Exception ex) { // Do Something }
}
private SqlDataAdapter CreateInventoryAdapter()
{
SqlDataAdapter adapter = new SqlDataAdapter();
....
command = new SqlCommand("SELECT * FROM INVENTORY", myConnection);
adapter.SelectCommand = command;
return adapter;
....
}