我试图使用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;
}
}
}

发布于 2016-08-15 19:31:33
当你这样做时:
string sqlString = @"SELECT [Id] FROM [dbo].[FamilyDetails];";你不会想这样做的:
id = Convert.ToInt32(command.ExecuteScalar());这里有三件事可能出错。
试着看看当表中有0或1或2条记录时会发生什么。
发布于 2016-08-15 19:05:54
-更新--
它现在起作用了,我的连接字符串丢失了一个字符。我认为当我取出连接字符串的连接超时部分时发生了这种情况。
谢谢你的建议!
https://stackoverflow.com/questions/38960959
复制相似问题