【问题标题】:Connection class in SQL ServerSQL Server 中的连接类
【发布时间】:2013-06-25 07:43:17
【问题描述】:

我正在实现连接我为ConnectInsert 实现了方法。这些方法正在奏效。但是我有问题如何实现getdata() 方法(从数据库中获取数据)。在我向方法发送查询后,我需要知道如何使用SqlDataReader

public String GetData(string _query)
{
     try
     {
         SqlCommand cmd = new SqlCommand(_query, this.dbCon);
         results = cmd.ExecuteReader().ToString();
         return results;
     }
     catch (Exception)
     {
         return "Error";
     }
}

我要完成这个get方法,我用的是SQL Server和C#

【问题讨论】:

    标签: c# sql-server-2008 c#-4.0


    【解决方案1】:

    不要重新发明轮子。对于大多数情况,类型化数据集和 EF 无疑是在 .NET 中检索和操作数据的最佳方法。 MS 已经以比您可能无法实现的更好的方式编写了您尝试编写的所有内容。你花在学习这两种技术上的时间会给你带来持久的好处。这对您来说更是如此,因为您将它用于 SQL Server。

    【讨论】:

      【解决方案2】:

      这是一个相当简单的例子,你可以看看:

      public SqlDataReader ExecuteReader(SqlCommand cmd)
              {
                  return cmd.ExecuteReader();
              }
      

      使用此方法,我可以执行以下操作:

      var reader = ExecuteReader(new SqlCommand("SELECT ColumnA, ColumnB FROM Table"));
      
      string ColA = string.empty;
      string ColB = string.empty;
      
      while (reader.Read())
             ColA = reader["ColumnA"].ToString();
             ColB = reader["ColumnB"].ToString();
      
      reader.Close();
      reader.Dispose();
      

      【讨论】:

      • 我想对多个查询使用此方法方法如何将其更改为用于多个查询
      • @user2490167 每次调用ExecuteReader,都可以传入不同的SqlCommand。因此,它可以用于您想要的任何查询,它会为它返回 SqlDataReader。
      【解决方案3】:

      试试这样的:

      private void TestMethod(string sqlCmd, List<string> myColumns)
      {
          try
          {
              SqlDataReader myReader = null;
              SqlCommand    myCommand = new SqlCommand(sqlCmd, myConnection);
              myReader = myCommand.ExecuteReader();
              while(myReader.Read())
              {
                  foreach (var col in myColumns)
                  {   
                     Console.WriteLine(myReader[col].ToString());                   
                  }
              }
          }
          catch (Exception e)
          {
              Console.WriteLine(e.ToString());
          }
      }
      

      另外你可以看看this Article

      【讨论】:

      • 我想对多个查询使用此方法方法如何将其更改为用于多个查询
      • 将 SQL 命令提取为参数,以便每次使用不同的查询调用方法。
      • 如何更改 while(myReader.Read()){}
      【解决方案4】:

      如下编写获取数据读取器的方法,

      private SqlDataReader TestMethod(string sqlCmd, List<string> myColumns)
      {
       try{
           SqlDataReader myReader = null;
           SqlCommand    myCommand = new SqlCommand(sqlCmd, myConnection);
           myReader = myCommand.ExecuteReader();
           return myReader;
         }
         catch (Exception e)
         {
           Console.WriteLine(e.ToString());
         }
      }
      

      然后把它当作,

      SqlDataReader myReader  = TestMethod("your query",youtcolumnlist)
      while(myReader.Read())
      {
      
         foreach (var col in myColumns)
         {   
             Console.WriteLine(myReader[col].ToString());                   
         }
      }
      

      【讨论】:

        猜你喜欢
        • 2019-03-20
        • 1970-01-01
        • 2016-09-07
        • 1970-01-01
        • 1970-01-01
        • 2022-12-24
        • 2010-09-05
        • 2021-05-15
        • 2014-03-13
        相关资源
        最近更新 更多