gpt4 book ai didi

c# - sql命令不适用于c#中的select语句

转载 作者:可可西里 更新时间:2023-11-01 10:55:45 27 4
gpt4 key购买 nike

我正在尝试使用 sql 命令执行以下代码以获取输出并将其存储在整数变量中。代码为空值插入返回 -1,这很好。

但是当数据库表中有值并且给出正确的输入时,代码再次返回相同的 -1 值。

有人能指出我正确的方向吗?

try {
con.Open();
SqlCommand cmd1 = new SqlCommand(@"(Select ERSConversionFactorID FROM " + schemaName + "[ERSConversionFactors] WHERE [ERSConversionFactor_CF] = @conversionvalue AND [ERSConversionFactor_Desc] = @convDescription)", con);

if (comboBox_ConfacValue.Text == "")
{
cmd1.Parameters.Add("@conversionvalue", SqlDbType.NVarChar, 160).Value = DBNull.Value;
}
else
{
cmd1.Parameters.Add("@conversionvalue", SqlDbType.NVarChar, 160).Value = comboBox_ConfacValue.Text;
}

if (combobox_conversionDescription.Text == "")
{
cmd1.Parameters.Add("@convDescription", SqlDbType.NVarChar, 160).Value = DBNull.Value;
}
else
{
cmd1.Parameters.Add("@convDescription", SqlDbType.NVarChar, 160).Value = combobox_conversionDescription.Text;
}

string sql = "Select ERSConversionFactorID FROM " + schemaName + "[ERSConversionFactors] WHERE [ERSConversionFactor_CF] = @conversionvalue AND [ERSConversionFactor_Desc] = @convDescription)";

int conversionvalue = cmd1.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show("Error : " + ex.Message);
}
finally
{
con.Close();
}

谢谢

最佳答案

ExecuteNonQuery 不适用于从您的查询中返回值。它执行查询,但只返回受 INSERT、UPDATE 或 DELETE 语句影响的行数。

如果您查看 ExecuteNonQuery 上的备注部分MSDN上的页面你会找到返回值-1的原因。

对于 SELECT 命令,如果您只想通过 SELECT 语句检索第一行的第一列,则可以使用 ExecuteReader 或更好的 ExecuteScalar。
但是,因为您的查询有一个 WHERE 语句可能导致没有检索到任何行,所以您应该在 ExecuteScalar 的返回值上添加一个 null 检查。

object result = cmd1.ExecuteScalar();
if(result != null)
{
int conversionvalue = Convert.ToInt32(result);
.....

}

关于c# - sql命令不适用于c#中的select语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36894474/

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