至于你的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,但是更新/插入/删除命令都是一样的,你只需要使用正确的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;
....
}