C# 如何编写自动生成ID的查询

C# 如何编写自动生成ID的查询,c#,sql,auto-increment,C#,Sql,Auto Increment,当我将下拉列表参数作为数据输入时出错,我无法将参数数据添加到发票表中,小计、税和合计的参数数据都有自己的值,但它仅适用于手动输入数据 下拉列表参数: using (var cmd = con.CreateCommand()) { cmd.CommandText = @"insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); select SCOPE_IDENTITY() as invoiceID;"; cmd

当我将下拉列表参数作为数据输入时出错,我无法将参数数据添加到发票表中,小计、税和合计的参数数据都有自己的值,但它仅适用于手动输入数据

下拉列表参数:

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();
}
手动输入:

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();
}

只需从值列表中删除该字段:

insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); select SCOPE_IDENTITY() as invoiceID;
您还可以使用OUTPUT子句通过以下方式获取值:

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

如果您确实想手动设置
标识
-列,您可以使用
设置标识_INSERT
,如前所述

只需从值列表中删除该字段:

insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); select SCOPE_IDENTITY() as invoiceID;
您还可以使用OUTPUT子句通过以下方式获取值:

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

如果您确实想手动设置
标识
-列,您可以使用
设置标识_INSERT
,如前所述

只需从值列表中删除该字段:

insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); select SCOPE_IDENTITY() as invoiceID;
您还可以使用OUTPUT子句通过以下方式获取值:

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

如果您确实想手动设置
标识
-列,您可以使用
设置标识_INSERT
,如前所述

只需从值列表中删除该字段:

insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); select SCOPE_IDENTITY() as invoiceID;
您还可以使用OUTPUT子句通过以下方式获取值:

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

如果您确实想要手动设置
标识
-列,您可以使用
设置标识_INSERT
,如上所述

不设置发票ID

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

不要设置invoiceID

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

不要设置invoiceID

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

不要设置invoiceID

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

如果在数据库中它是递增的,则不需要在代码中再次修改它。只需从语句中删除invoiceID即可

如果数据库中的invoiceID是递增的,则无需在代码中再次修改它。只需从语句中删除invoiceID即可

如果数据库中的invoiceID是递增的,则无需在代码中再次修改它。只需从语句中删除invoiceID即可

如果数据库中的invoiceID是递增的,则无需在代码中再次修改它。只需从您的语句中删除invoiceID即可

我不是.NET用户,但通过谷歌搜索,我认为您不必在插入查询中提及标识字段:

using (var cmd = con.CreateCommand())
            {
                cmd.CommandText = @"insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total);
// the rest
            }
请看一下这个简单的教程:

我不是.NET用户,但通过谷歌搜索,我认为您不必在插入查询中提及标识字段:

using (var cmd = con.CreateCommand())
            {
                cmd.CommandText = @"insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total);
// the rest
            }
请看一下这个简单的教程:

我不是.NET用户,但通过谷歌搜索,我认为您不必在插入查询中提及标识字段:

using (var cmd = con.CreateCommand())
            {
                cmd.CommandText = @"insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total);
// the rest
            }
请看一下这个简单的教程:

我不是.NET用户,但通过谷歌搜索,我认为您不必在插入查询中提及标识字段:

using (var cmd = con.CreateCommand())
            {
                cmd.CommandText = @"insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total);
// the rest
            }
请看一下这个简单的教程:


MySQL或Microsoft SQL?如果设置了标识列,则不能指定值。如果在插入中省略它,它就会起作用。我是否在这里遗漏了什么,或者您是否插入到与您正在创建的表不同的表中?MySQL或Microsoft SQL?如果设置了标识列,则无法指定值。如果在插入中省略它,它就会起作用。我是否在这里遗漏了什么,或者您是否插入到与您正在创建的表不同的表中?MySQL或Microsoft SQL?如果设置了标识列,则无法指定值。如果在插入中省略它,它就会起作用。我是否在这里遗漏了什么,或者您是否插入到与您正在创建的表不同的表中?MySQL或Microsoft SQL?如果设置了标识列,则无法指定值。从insert中省略它,它将起作用。我是否遗漏了某些内容,或者您是否插入到与您正在创建的表不同的表中?是的,我以前尝试过此操作,但我收到一个错误,错误是“无法将值NULL插入到表的'invoiceID'列中;列不允许NULL。insert失败。”错误发生在第行“object OBJinvoiceID=cmd.ExecuteScalar();“表名为
Invoice
Order1
?有区别吗?当您的表将列
invoiceID
作为标识列时,无法插入该列,因此必须将其忽略。请检查表配置和标识插入设置。有两个表,一个是发票,另一个是Order1。它适用于Order1,因为我是手动输入数据的,但是当我将其设置为自动递增时出现错误,这个表的区别是Order1表中的数据是手动输入的,而Invoice中的数据是我从下拉列表中获取的参数,因为我获取了参数“cmd.parameters.AddWithValue”(@subtotal),subtotal);“在发票表中,所以我得到了错误?如何解决这个问题?是的,我以前尝试过这个,但是我得到一个错误,说”不能将NULL值插入到表的'invoiceID'列中;列不允许空值。插入失败。“错误发生在第行”object OBJinvoiceID=cmd.ExecuteScalar();“表名为
Invoice
Order1
?有区别吗?当您的表将列
invoiceID
作为标识列时,无法插入该列,因此必须将其忽略。请检查表配置和标识插入设置。有两个表,一个是发票,另一个是Order1。它适用于Order1,因为我是手动输入数据的,但是当我将其设置为自动递增时出现错误,这个表的区别是Order1表中的数据是手动输入的,而Invoice中的数据是我从下拉列表中获取的参数,因为我获取了参数“cmd.parameters.AddWithValue”(@subtotal),subtotal);“在发票表中,所以我得到了错误?如何解决这个问题?是的,我以前尝试过这个,但是我得到一个错误,说”不能将NULL值插入到表的'invoiceID'列中;列不允许空值。插入失败。“错误发生在第行”object OBJinvoiceID=cmd.ExecuteScalar();“该表是否命名为
Invoice
Order1
?是否有差异?当您的表将
invoiceID
列作为标识列时,它不能被删除。”