gpt4 book ai didi

c# - ExecuteScalar() 总是返回 NULL

转载 作者:行者123 更新时间:2023-12-05 05:23:01 24 4
gpt4 key购买 nike

我正在尝试使用 ExecuteScalar() 从数据库中返回一个整数。但是,当我在数据库本身上运行查询时,我得到了正确的答案,并且 c# 始终给我一个 0(Null)。我知道它返回一个空值,因为在我添加 id = Convert.ToInt32(command.ExecuteScalar()); 之前它会给我一个错误,告诉我确保处理 NULL。我期待它返回 3 顺便说一下。

 private int getFamilyId()
{
int id = 0;
using (SqlConnection connection = new SqlConnection(Globaldata.ConnectionString))
{
using (SqlCommand command = new SqlCommand())
{
string sqlString = @"SELECT [Id] FROM [dbo].[FamilyDetails];";
command.Connection = connection;
command.CommandText = sqlString;
try
{
connection.Open();
id = Convert.ToInt32(command.ExecuteScalar());
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK);
}
finally
{
connection.Close();
}
return id;
}
}
}

This is what I get when I run it on the database

最佳答案

当你这样做时:

string sqlString = @"SELECT [Id] FROM [dbo].[FamilyDetails];";

你不想这样做:

id = Convert.ToInt32(command.ExecuteScalar());

这里可能会出现三个问题。

  • 问题 #1:如果表中没有行,command.ExecuteScalar() 将返回 Null

  • 问题 #2:如果表中有任何行,command.ExecuteScalar() 将返回它碰巧遇到的第一行的值,因为 SELECT 语句不限于 1 个值。

  • 问题 #3:如果 Id 列未声明为 NOT NULL,command.ExecuteScalar() 可能返回 DbNull,这在转换为 Integer 时没有任何意义。

尝试看看当表中有 0 条或 1 条或 2 条记录时会发生什么。

关于c# - ExecuteScalar() 总是返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38960959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com