【问题标题】:Returning a Dataset as an Object in a Method在方法中将数据集作为对象返回
【发布时间】:2012-07-20 20:04:47
【问题描述】:

我正在编写一个方法,它将查询一个表并返回一个包含指定列的 Dataset 对象。此外,我的用户名和密码有问题,所以我正在使用 Windows 身份验证,但我不太确定在我写到现在的 sn-p 中。

 protected void GetProgramList()
    {
        SqlConnection cn = new SqlConnection("server=Daffodils-PC/sqlexpress;Database=Assignment1;Trusted_Connection=Yes;");
        SqlCommand cmd = new SqlCommand("SELECT ProgramName FROM Program", cn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet1 ds1 = new DataSet1();

    }

我一直在尝试遵循官方的 MS 文档,但我不确定我要去哪里?有人可以帮我提供一些链接或sn-ps吗?

【问题讨论】:

标签: c# asp.net sql-server


【解决方案1】:

建议:“使用” System.Data 和 System.Data.SqlClient,并使用“SqlDataReader”:

要么读取例程中的所有内容(通常首选),要么将 SqlDataReader 传递回调用者(作为函数返回)。

完成后请务必 .Close() 阅读器 :)

【讨论】:

    【解决方案2】:

    我想说你有两个选择: 1. 做一个DataSet类变量,让整个类都可以访问它的引用(设置它的访问修饰符为public,这样就可以从其他类访问) 2. 或者创建一个返回类型为DataSet的方法。但是在这种情况下,另一端也必须设置为接收 DataSet:

    //2.解决方案:

        private void GetData()
        {
            //from inside some method:
            DataSet ds = GetProgramList();
        }
    
        protected DataSet GetProgramList()
        {
            DataSet ds1 = new DataSet();
            using (SqlConnection cn = new SqlConnection("server=Daffodils-PC/sqlexpress;Database=Assignment1;Trusted_Connection=Yes;"))
            {
                using (SqlDataAdapter da = new SqlDataAdapter(@"SELECT ProgramName FROM Program", cn))
                    da.Fill(ds1, "TableName1");
            }
            return ds1;
        }
        //
    
    
    //1. solution:
    class YourClass
    {
        DataSet ds1;
        protected void GetProgramList()
        {
            SqlConnection cn = new SqlConnection("server=Daffodils-PC/sqlexpress;Database=Assignment1;Trusted_Connection=Yes;");
            SqlCommand cmd = new SqlCommand("SELECT ProgramName FROM Program", cn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            ds1 = new DataSet();
        }
    }
    

    【讨论】:

    • 我在这里犯的错误是,我没有返回任何东西,我使用的是 void 方法。我应该为数据集使用什么返回类型?
    • DataSet 返回类型当然 - 如果您使用我的第二个解决方案! ...如果您使用我的第一个解决方案,则使用 void 返回类型!
    • 还有一个问题,我应该使用什么样的变量类型来存储返回的Dataset?
    • 再次数据集。检查我的第二个解决方案。都在那里!
    【解决方案3】:

    SQLDataAdapter basic 将帮助您开始创建连接并在代码中使用它的基础知识。

    【讨论】:

      【解决方案4】:

      将连接字符串放在 app.config 或 web.config 的 AppSettings 部分

         public string GetSqlConnection()
          {
              return  System.Configuration.ConfigurationManager.AppSettings["SqlConnectionString"];
          }
      
      
      
        public DataSet getDataSet(string sql)
          {
              DataSet ds = new DataSet();
              SqlConnection conn = new SqlConnection(GetSqlConnection());
              SqlDataAdapter da = new SqlDataAdapter(sql, conn);
              da.Fill(ds);
              conn.Close();
              conn.Dispose();
              da.Dispose();
              return ds;
          }
      

      【讨论】:

        猜你喜欢
        • 2014-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 2018-04-14
        • 1970-01-01
        • 2014-10-27
        相关资源
        最近更新 更多