如何在主键列已设置默认标识时将数据插入 sql 服务器数据库(1, 1)
How to insert data into sql server database when the primary key column already set default identity(1, 1)
我正在尝试将两个数据列插入到我的 SQL 服务器数据库中,但在代码行出现错误 -> cmd.ExecuteNonQuery();
Cannot insert the value NULL into column OrderID
, table RestaurantApp.dbo.Junc_Order
; column does not allow nulls. INSERT fails.
OrderID
列实际上是我数据table中的主键。我将它设置为 identity(1, 1) 并想插入其他数据,同时它可以自动插入 1, 2, 3, 4....。
这是我的部分代码:
string insertString = "INSERT INTO Junc_Order(ID, Quantity)values (@ID, @Quantity)";
SqlCommand cmd = new SqlCommand(insertString, conn);
cmd.Parameters.AddWithValue("@ID", r_ID);
cmd.Parameters.AddWithValue("@Quantity", r_Quantity);
cmd.ExecuteNonQuery();
我已经在这些代码之前连接到数据库了,所以问题应该不是这个。
已更新 Junc_Order table 设计:
OrderID (PK,FK,int,not null)
ID(FK,int,not null)
Quantity(int,not null)
通过查看您的问题,您的插入查询似乎不正确:
- 首先,您不需要插入 "OrderID",因为它是主键标识,所以 sql 服务器会自动插入它。
其次,在某处您将 "r_ID" 设为空,这就是您面对 error.Verify 并使用以下代码修改代码的原因:
字符串 insertString = "INSERT INTO Junc_Order(Quantity) values(@Quantity)";
SqlCommand cmd = new SqlCommand(insertString, conn);
cmd.Parameters.AddWithValue("@数量", r_Quantity);
cmd.ExecuteNonQuery();
我正在尝试将两个数据列插入到我的 SQL 服务器数据库中,但在代码行出现错误 -> cmd.ExecuteNonQuery();
Cannot insert the value NULL into column
OrderID
, tableRestaurantApp.dbo.Junc_Order
; column does not allow nulls. INSERT fails.
OrderID
列实际上是我数据table中的主键。我将它设置为 identity(1, 1) 并想插入其他数据,同时它可以自动插入 1, 2, 3, 4....。
这是我的部分代码:
string insertString = "INSERT INTO Junc_Order(ID, Quantity)values (@ID, @Quantity)";
SqlCommand cmd = new SqlCommand(insertString, conn);
cmd.Parameters.AddWithValue("@ID", r_ID);
cmd.Parameters.AddWithValue("@Quantity", r_Quantity);
cmd.ExecuteNonQuery();
我已经在这些代码之前连接到数据库了,所以问题应该不是这个。
已更新 Junc_Order table 设计:
OrderID (PK,FK,int,not null)
ID(FK,int,not null)
Quantity(int,not null)
通过查看您的问题,您的插入查询似乎不正确:
- 首先,您不需要插入 "OrderID",因为它是主键标识,所以 sql 服务器会自动插入它。
其次,在某处您将 "r_ID" 设为空,这就是您面对 error.Verify 并使用以下代码修改代码的原因:
字符串 insertString = "INSERT INTO Junc_Order(Quantity) values(@Quantity)"; SqlCommand cmd = new SqlCommand(insertString, conn); cmd.Parameters.AddWithValue("@数量", r_Quantity); cmd.ExecuteNonQuery();