.NET C# 使用DataAdapter 和 DataSet访问数据库实例

创建Adapter

通过 DataAdapter 可以将数据库 和 DataSet 联系起来,笔者认为相对于 DataReader,使用DataAdapter 可以支持多条 SQL 语句查询。

DataAdapter 用于从数据源检索数据并填充DataSet表中,DataAdapter 还将对DataSet 的 更改解析回数据源。

DataAdapter 填充DataSet 或 DataTable

DataAdapter 的 Fill 方法使用 DataAdapter 的 SelectCommand 的结果集来填充DataSet。Fill 方法的参数 包括将要 填充的 DataSet 和 DataTable 对象。

操作 和处理 DataSet

使用DataAdapter 的Fill 方法 填充DataSet 中的DataTable后,以断开式操作 DataSet 的数据库表,包括数据的查询、插入、更新和删除等操作。

使用DataAdapter 更新数据源

调用 DataAdapter的 Update 方法,可以将DataSet 中的更改解析回数据源。

在我们实际的项目中,很少使用 DataAdapter 这种方式去更新表。下面就只 写了一个 查询的用法。

如果我们的项目中,该次查询需要两个SQL,也就是说会产生 两个DataTable 时,使用DataAdapter 是特别方便的。

比如: 我们要 分页查询问题列表,然后还要获取 问题的总数,这样我们就需要两个SQL语句,同时也将差生两个结果集合,此时我们使用DataAdapter是特别方便的。

实例代码

   public void Connection()
   {
        string connStr = @"Data Source=123.123.123.123;Initial Catalog=test; Persist Security Info=True;User ID=admin;Password=admin";

        string sql = @"SELECT TOP 10 * FROM Test WHERE AskCity = @city;
                       SELECT COUNT(askid)  FROM Test WHERE AskCity = @city";
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            //建立连接
            conn.Open();

            //创建SQL命令
            SqlCommand queryCmd = new SqlCommand(sql, conn);

            //添加参数
            List list = new List();
            list.Add(new SqlParameter() { ParameterName = "city", SqlDbType = SqlDbType.VarChar, Value = "全国" });
            queryCmd.Parameters.AddRange(list.ToArray());

            //创建Adapter
            SqlDataAdapter adapter = new SqlDataAdapter(queryCmd);

            //创建DataSet
            DataSet ds = new DataSet();

            //填充数据集
            adapter.Fill(ds);

            DataTable asklist = ds.Tables[0];
            DataTable allCount = ds.Tables[1];

            //遍历数据集
            if (asklist.Rows.Count > 0)
            {
                Console.WriteLine("AskID      \t\t标题");
                foreach (DataRow item in asklist.Rows)
                {
                    Console.WriteLine("{0} \t\t{1}",Convert.ToInt32(item["AskId"]),item["Title"].ToString().Substring(0,10));
                }
            }

            conn.Close();
        }

    }

你可能感兴趣的:(数据库,web开发,sql-server,ado-net,c#)