【问题标题】:Getting a single value from SQL with ADO.NET使用 ADO.NET 从 SQL 获取单个值
【发布时间】:2013-08-07 20:06:21
【问题描述】:

我已经这么远了:

// Update status history if the current work flow item has a status
int workflowID = Convert.ToInt32(statusCode.SelectedValue);
string status = "select status from jm_accountworkflowdetail where workid = @workID";

SqlConnection sqlConnection2 = new SqlConnection(sqlDevelopment.ConnectionString);
SqlCommand sqlComm2 = new SqlCommand(status, sqlConnection2);

sqlComm2.Parameters.AddWithValue("@workID", workflowID);

查询将返回一个值 ('SOC', 'POS') 或 ('') 表示它没有附加状态。

我需要做的是,如果状态不为空,则执行一些其他代码。但我不确定如何执行所有操作来检查状态是否有值。

【问题讨论】:

  • 将代码发布到您实际执行命令的位置。
  • @KarlAnderson 我没有添加 tat,但我确信我可以像其他人一样使用 sqlComm2.EvecuteNonQuery();
  • 您可以在sqlComm2 上使用ExecuteScalar 来获取status 的值(我假设您只期望查询返回一行)。您需要转换 ExecuteScalar 的返回值,但之后您可以检查它是否有您期望的值....
  • ExecuteNonQuery 不会返回任何数据。对于 SELECT 语句,您必须使用 ExecuteScalarExecuteReader
  • @nkvu 我会试试的,谢谢,是的,应该只返回一个响应。

标签: c# sql-server ado.net webforms


【解决方案1】:

你需要使用ExecuteScalar();

 string statusReturned = "";
 int workflowID = Convert.ToInt32(statusCode.SelectedValue);

 using (SqlConnection sqlConnection2 = new SqlConnection(sqlDevelopment.ConnectionString))
    {
        string status = "select status from jm_accountworkflowdetail where workid = @workID";
        SqlCommand sqlComm2 = new SqlCommand(status, sqlConnection2);
        sqlComm2.Parameters.AddWithValue("@workID", workflowID);
        try
        {
            sqlConnection2.Open();
            var returnValue = sqlComm2.ExecuteScalar()
                if returnValue != null then
                  statusReturned = returnValue.ToString();
        }
        catch (Exception ex)
        {
            //handle exception
        }
    }
    return statusReturned;

要检查字符串值,您可以:

if (!String.IsNullOrEmpty(statusReturned)) {//perform code for SOC or POS}

【讨论】:

  • 我使用了您在更新帖子之前拥有的内容,它运行良好,我相信更新也会运行良好。你们是天才。 :)
  • 我已经更新了外部代码,以使用 using 语句,这将处理您的连接,我看不到您的所有代码,所以如果您没有,那么值得实现该模式'还没有这样做。
【解决方案2】:

为了将来参考,如果您担心检查 null 并为 null 值做出一些决定,您可以在 T-SQL 中使用IsNull 函数。如果记录为空,它基本上会返回一个值。所以你上面的代码会变成这样:

string status = "select IsNull(status,'NoStatus') from jm_accountworkflowdetail where workid = @workID";

然后在你完成 SQL 之后,你将使用 If Else 代替 status

If(Status == "NoStatus") {your code block} 

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多