5.1何为SqlDataAdapter
5.1.2 创建并使用SqlDataAdapter对象
strSQL ="select * From tbname";
SqlConnection = new SqlConnection(strConnection);
SqlCommand = new SqlCommand(strSQL,cn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd
SqlDataAdapter 构造函数
//传连接字串,这个方法会生成一个新的SqlConnection对象
SqlDataAdapter da = new SqlDataAdapter(strSQL,strConnection);
//传连接对象
SqlDataAdapter da = new SqlDataAdapter(strSQL,cn);
//传SqlCommand对象
SqlCommand cmd = new SqlCommand(strSQL,cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
5.2.2 从查询中获取结果
1.使用Fill() 方法
调用SqlDataAdapter类的Fill方法会执行储存在SqlDataAdapter中的SqlCommand对象属性中的查询,并将结果储存在DataSet.
以下代码调用Fill方法,并显示储存在DataSet中的结果
//没时间睡觉了,抓紧时间呀,岁月不咬人,时间吹人老。
strSQL ="select userName,userID From customers";
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strSQL,strConnection);
da.Fill(ds);
foreach(DataRow row in ds.Tables[0].Rows)
Console.Write("{0} - {1}",Row["userID"],row["userName"]);
//这里的Fil方法隐式l创建一个DataTable对象,并且TableName是"Table"
这个值的描述性比较差,可以用以下代码来自定义填充的tableName
SqlDataAdapter da = new SqlDataAdapter(strSQL,cn);
da.TableMappings.Add("Table","customers");//添加表名
DataSet ds = new DataSet();
da.Fill(ds);
Console.Write("Table ={0}",ds.Tables[0].TableName);
//也可用下面的方法指定Fill参数,不用手工添加表名
5.2.2从查询中获取结果
4.使用重载的Fill方法
strSQL ="Select * From customers";
SqlCommand cmd = new SqlCommand(strSQL,cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
foreach(DataRow row in dt.Rows)
Console.Write("{0}-{1}",row[1],row[2]);
用SqlDataAdapter类的Fill方法分页
//从第一条记录开始,填充20条记录到"Products"的DataTable中
SqlDataAdapter.Fill(DataSet,0,20,"Products");
//这个方法很容易对查询进行分页,但其效率比较低。