我有一個簡單的測試數據庫,它有一個名爲ID的列,它是一個帶有自動設置的主鍵。向具有身份主鍵的sql數據庫添加一行
我想一個新的行添加到我使用sqladapter
當我離開新行的ID列空想着SQL會增加它,它會顯示以下錯誤創建的數據表:
"Column "ID" doesn't not allow nulls
我解決了,但給人ID喜歡dr["ID"] = 99999
任何價值和它的工作,但現在當SQL數據庫忽略該值,只是給它正確的號碼錶具有的99999 ID,這使得它有點CON如果我嘗試插入另一條記錄,可能會發生錯誤
我該如何解決這個問題?
比較遺憾的是:
DataRow dr = dt.NewRow();
dr["Name"] = "fds";//E.Name;
dr["Age"] = 12;// E.Age;
dr["DateOfBirth"] = "1-1-1999";// E.DoB;
//dr["ID"] = 99999;
dt.Rows.InsertAt(dr, dt.Rows.Count - 1);
DBOperations.UpdateTable(dt);
MessageBox.Show("Record added successfully");
static internal void UpdateTable(DataTable dt)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
SqlDataAdapter Adapter = new SqlDataAdapter();
Adapter.SelectCommand = new SqlCommand("select * from Emp",con);
Adapter.UpdateCommand = new SqlCommandBuilder(Adapter).GetUpdateCommand();
Adapter.InsertCommand = new SqlCommandBuilder(Adapter).GetInsertCommand();
Adapter.DeleteCommand = new SqlCommandBuilder(Adapter).GetDeleteCommand();
Adapter.Update(dt);
}
DB腳本:
USE [HR]
GO
/****** Object: Table [dbo].[Emp] Script Date: 2/12/2013 8:10:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Emp](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NOT NULL,
[Age] [int] NOT NULL,
[DateOfBirth] [date] NOT NULL,
CONSTRAINT [PK_Emp] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
截圖:你可能想
請顯示您的代碼。如果我們看不到它,我們怎麼能說出你做錯了什麼? – 2013-02-12 17:37:25
創建/返回InsertCommand的代碼在哪裏? – Tim 2013-02-12 18:06:12
您確定ID列是標識列嗎?如果您嘗試插入標識列,你應該得到一個'表無法插入的標識列顯式值「的Emp」當IDENTITY_INSERT設置爲OFF.'錯誤 – shf301 2013-02-12 18:06:32