C#ExecuteScalar()返回null,但数据插入到SQL表中

C#ExecuteScalar()返回null,但数据插入到SQL表中,c#,.net,sql-server,C#,.net,Sql Server,我正在使用SQL Server 每次成功地将数据插入数据库,但总是返回空值。在SQL Server中,我只创建了第一列('Id')上只有自动递增的表。我的桌子看起来像这样: 列名 类型 身份证件 int 日期时间 日期时间 客户名称 nvarchar 客户号 nvarchar 总价 浮动 您需要返回SQL函数SCOPE_IDENTITY(),如下所示 cmd.CommandText = "INSERT INTO appointmentTable(DateTime,ClientName

我正在使用SQL Server

每次成功地将数据插入数据库,但总是返回空值。在SQL Server中,我只创建了第一列('Id')上只有自动递增的表。我的桌子看起来像这样:

列名 类型 身份证件 int 日期时间 日期时间 客户名称 nvarchar 客户号 nvarchar 总价 浮动
您需要返回SQL函数SCOPE_IDENTITY(),如下所示

cmd.CommandText = "INSERT INTO 
appointmentTable(DateTime,ClientName,ClientNumber,TotalPrice) VALUES( @datee, @clientName 
,@clientNumber, @totalPrice); SELECT SCOPE_IDENTITY();";

您可以尝试使用OUTPUT子句返回新插入的id

cmd.CommandText=“插入到
appointmentTable(日期时间、客户名称、客户编号、总价)
插入的输出.ID
值(@datee、@clientName、@clientNumber、@totalPrice)

作为一项补充,强烈建议您:。当然,不要将日期转换为字符串来插入它,将其作为本机日期时间插入。如果查看,您将看到需要为其返回选择新id。这可能是因为您使用的是AddWithValue-使用常规add方法并正确设置数据类型。上面链接的文档中有一个确切的示例,显示了如何执行您尝试执行的操作-请阅读单独注意,
TotalPrice
对于价格来说是一个糟糕的数据类型选择。使用
float
表示您对舍入错误感到满意,这在处理金钱时是一件非常糟糕的事情。