2015-04-01 72 views
0

當我輸入下拉列表參數作爲數據時,我得到一個錯誤,我無法將參數數據添加到發票表,小計,稅收和總計的參數數據他們自己的價值,但它只適用於手動輸入數據。如何編寫查詢自動生成ID

下拉列表參數:

using (var cmd = con.CreateCommand()) 
{ 
cmd.CommandText = @"insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); select SCOPE_IDENTITY() as invoiceID;"; 
cmd.Parameters.AddWithValue("@subtotal", subtotal); 
cmd.Parameters.AddWithValue("@tax", tax); 
cmd.Parameters.AddWithValue("@total", total); 
object OBJinvoiceID = cmd.ExecuteScalar(); 
} 

手動輸入:

insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); select SCOPE_IDENTITY() as invoiceID; 

您也可以使用輸出 - :

using (var cmd = con.CreateCommand()) 
{ 
cmd.CommandText = @"insert into Invoice(subtotal,tax,total) values (2,2,2); select SCOPE_IDENTITY() as invoiceID;"; 
object OBJinvoiceID = cmd.ExecuteScalar(); 
} 
+0

MySQL或Microsoft SQL? – 2015-04-01 10:01:06

+0

如果設置了標識列,則不能指定值。從插入中省略它,它將起作用。 – Kami 2015-04-01 10:01:28

+2

我在這裏錯過了什麼,或者你是否插入了與正在創建的表不同的表格? – colmde 2015-04-01 10:06:15

回答

3

剛剛從你的價值觀上市去除場條款獲得使用價值:

into Invoice(subtotal,tax,total) OUTPUT invoiceID values (@subtotal,@tax,@total); 

在這種情況下你真的想設置identity -column手動,您可以使用SET IDENTITY_INSERT描述here in MSDN

+0

是的,我已經嘗試過,但我得到一個錯誤,說:「不能插入NULL值列'invoiceID',表;列不允許NULL,INSERT失敗。 – qwe 2015-04-02 00:55:51

+0

錯誤發生在行「object OBJinvoiceID = cmd.ExecuteScalar();」 – qwe 2015-04-02 01:00:42

+0

名爲'Invoice'或'Order1'的表格是?有區別嗎?當你的表有'invoiceID'列作爲標識列時,它不能被插入,所以它必須被省略。請檢查表格配置和IDENTITY_INSERT設置。 – 2015-04-02 06:49:24

0

不要設置invoiceID

insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); 
+0

是的,我已經嘗試過,但我得到一個錯誤,說:「不能將值NULL插入列'invoiceID',表;列不允許NULL,INSERT失敗。 – qwe 2015-04-02 00:56:23

+0

錯誤發生在「對象OBJinvoiceID = cmd」行。ExecuteScalar();「 – qwe 2015-04-02 01:01:19

+0

我看到你已經編輯了你的帖子,向我們顯示了創建發票表的代碼,它沒有'invoiceID'作爲Identity列,這就是爲什麼你會得到這個錯誤。 – colmde 2015-04-02 07:12:54

0

如果你擁有了它在數據庫遞增你不需要在代碼中再次修改它。剛剛從你的陳述

+0

yes,I之前嘗試過,但是我得到一個錯誤,說:「不能將值NULL插入列'invoiceID',表;列不允許有空值。 INSERT失敗。「 – qwe 2015-04-02 00:56:08

+0

錯誤發生在行」對象OBJinvoiceID = cmd.ExecuteScalar();「 – qwe 2015-04-02 01:00:48

+0

重建您的數據庫實現,因此它的東西類似於:invoiceID int NOT NULL並確保它設置爲身份。 http://stackoverflow.com/questions/10991894/auto-increment-primary-key-in-sql-server-management-studio-2012)所以你可以輕鬆地做到這一點。 – vLr 2015-04-03 14:38:55

0

刪除invoiceID我不是一個.NET的傢伙,但通過google搜索,我認爲你有沒有提到你的插入查詢標識字段:

using (var cmd = con.CreateCommand()) 
      { 
       cmd.CommandText = @"insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); 
// the rest 
      } 

PLZ採取看看這個簡單的教程: w3schools

+0

是的,我曾嘗試過,但我得到一個錯誤說:「不能將值NULL插入列'invoiceID',表;列不允許有空值。 INSERT失敗。「 – qwe 2015-04-02 00:56:37

+0

錯誤發生在行」對象OBJinvoiceID = cmd.ExecuteScalar();「 – qwe 2015-04-02 01:01:28

0
insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); select SCOPE_IDENTITY() as invoiceID; 
+0

是的,我已經嘗試過此,但我得到一個錯誤,說:」不能插入NULL值列'invoiceID',表;列不允許有空值。 INSERT失敗。「 – qwe 2015-04-02 00:56:03

+0

錯誤發生在行」object OBJinvoiceID = cmd.ExecuteScalar();「 – qwe 2015-04-02 01:00:53