Что касается вашей проблемы с ПЕРВИЧНЫМ КЛЮЧОМ, это то, как я структурировал свою простую таблицу, и она прекрасно работает со вставкой, обновлением, выбором и удалением
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)
Теперь, что касается кода, кажется, что вам нужно создать глобальный адаптер данных и повторно использовать его для внутренних подключений базы данных. Я предполагаю, что вы используете SQL. Я не видел ваш код, но вы не должны ссылаться на ваш первичный ключ в ваших командах INSERT или UPDATE, так как я предполагаю, что ваш PRIMARY KEY является автоинкрементным, а НЕ NULL. Начните с создания адаптера данных с помощью команд SelectCommand, InsertCommand, UpdateCommand и DeleteCommand. В приведенном ниже примере показана только команда 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;
....
}