【问题标题】:How do get a simple string from a database如何从数据库中获取一个简单的字符串
【发布时间】:2011-06-25 01:23:18
【问题描述】:

以下代码不起作用。此表中只有 1 行。我如何才能获得 sql 将返回的语句?:

SqlConnection conn = new SqlConnection(connectionStringArg);
SqlCommand command = new SqlCommand("select applicationname from tbl_settings");
command.Connection = conn;
conn.Open();
string simpleValue = command.ExecuteReader()[0].ToString();
conn.Close();
return simpleValue;

好的,任何关于如何完成这个相对简单的任务的帮助都会很棒。

【问题讨论】:

    标签: c# asp.net sql ado.net


    【解决方案1】:
    var query_result = com.ExecuteScalar() as string;
    if (!string.IsNullOrEmpty(query_result )) // do your thing here...
    

    【讨论】:

      【解决方案2】:
      string applicationname = "";
      using(var reader = command.ExecuteReader()) 
       {
          reader.Read();
          applicationname = reader.GetString(reader.GetOrdinal("applicationname"));
       }
      

      【讨论】:

        【解决方案3】:

        DataReader 不能像那样被索引。你需要这样的东西:

        using(conn)
        using(var reader = command.ExecuteReader()) 
        {
            reader.Read();
            string simpleValue = reader.GetString(0);
        }
        

        一般的想法是推进每条记录的阅读器(使用Read),然后您可以从行中读取值。正如另一个答案中所指出的,如果您知道结果集中只有一个值,command.ExecuteScalar() 会为您提供。

        【讨论】:

          【解决方案4】:

          对于单个字符串,您想使用ExecuteScalar 获取单个值,然后尝试将其转换为字符串。 From doc: 执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。

          示例:
          string result = command.ExecuteScalar() as string;

          对于小东西,我经常发现 LINQ2SQL 最容易设置和使用。 This tutorial 应该让您在几分钟内启动并运行。对于更大的项目LINQ2SQL is considered obsolete,请参阅this question 进行讨论和替代方案。

          【讨论】:

            【解决方案5】:

            由于只返回一个值,您可以这样做:

             string value = (string)command.ExecuteScalar();
            

            如果您需要的多于返回的第一行的第一列,则需要使用 ExecuteReader()。请参阅 driis 的answer

            【讨论】:

              【解决方案6】:

              勾选DataReader.Read()你需要调用它。

              【讨论】:

                【解决方案7】:

                你会做例如

                    using(SqlConnection conn = new SqlConnection(connectionStringArg))
                    using(SqlCommand command = new SqlCommand("select applicationname from tbl_settings")) {
                
                        command.Connection = conn;
                        conn.Open();
                        SqlDataReader reader = command.ExecuteReader();
                        if(reader.read()) {
                            return reader.GetString(0);
                        }
                        return null;
                    }
                

                【讨论】:

                  【解决方案8】:

                  您必须在从 ExecuteReader 返回的 DataReader 上调用 Read 方法才能到达第一行。像这样的:

                          SqlDataReader rdr = command.ExecuteReader();
                          if (rdr.Read())
                               ...
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-12-24
                    • 2015-03-14
                    • 2012-05-15
                    相关资源
                    最近更新 更多