DataReader对象读取数据与DataAdapter、DataSet对象操作数据

目录

1、DataReader使用案例:

2、给DataAdapter对象的selectCommand属性赋值

3、综合地使用DataTable、DataColumn和DataRow对象进行数据库操作

4、使用Table名来访问DataTable

5、使用Rows属性访问数据记录

6、使用Rows属性,访问指定行的指定字段

7、综合使用DataRow和DataColumn访问DataTable内的数据

8、使用DataSet和DataAdapter对象访问数据库

9、利用DataAdapter对象填充DataSet对象

10、使用DataAdapter对象,将DataSet中的数据更新到数据库

DataReader:负责读取数据库中的数据

DataAdapter:负责在Command对象执行完SQL语句后生成并填充DataSet和DataTable。(相当于一个连接桥,或是连接池)

DataSet:即数据集。DataSet为数据提供一种与数据无关的内存驻留表示形式。负责存取和更新数据

用法:

1、只有查询、读取操作时,调用DataReader对象

2、增、删、改操作时,需要先调用DataAdapter对象连接数据库,再调用DataSet对象

 

1、DataReader使用案例:

namespace DataReader Test
{
 
    public partial class Forml: Form
    {
 
        public Forml ()
        {
            InitializeComponent();
        }
 
        private void Form1 Load (object sender, EventArgs e)
        {
            //定义输出消息
            string message=""
    
            //新建连接对象
            SqlConnection conn=new SqlConnection();
            conn.ConnectionString="Data Source=(local); Initial Catalog= stu; Integrated         Security=SSPI";
 
            //拼接命令字符串
            string selectQuery="select ID, sName, zy, bi from StuInfo"
 
            //新建命令对象
            SqlCommand cmd=new SqlCommand(selectQuery, conn);
 
            //关闭阅读器时将自动关闭数据库连接
            conn.Open();
        
            SqlDataReader reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
 
            //循环读取信息
            while(reader.read())
            {
                message+="学号"+reader[0].ToString()+" ";
                message+="姓名"+reader["sName"].ToString()+" ";
                message+="专业"+reader.GetString(2)+" ";
                message+="班级"+reader.GetString(3)+" ";
                message+="\n";
            }
 
            //关闭数据阅读器
            //无须关闭连接,它将自动被关闭
            reader.Close();
 
            //测试数据连接是否已经关闭
            if(conn.State==ConnectionState.Closed)
            {
                    message+="数据连接已经关闭\n";
            }
            MessageBox.Show(message);
        }
    }
}

2、给DataAdapter对象的selectCommand属性赋值

//连接字符串
SqlConnection conn;
//创建连接对象conn语句
conn=new Sqlconnection(str)
//创建DataAdapter对象
SqlDataAdapter da=new SqlDataAdapter;
//给DataAdapter对象SelectCommand属性赋值
da.SelectCommand=new SqlCommand("select * from student",conn);
...

  同样,可以使用上述方式给其他的InsertCommand、DeleteCommand和UpdateCommand属性赋值。

3、综合地使用DataTable、DataColumn和DataRow对象进行数据库操作

private void DemonstrateRowBeginEdit()
{
    //创建DataTable对象
    DataTable table=new DataTable("table1");
    //创建DataColumn对象,并设置其属性为Int32类型
    DataColumn column=new DataColumn("col1",Type.GetType("System.Int32"));
    //添加Column到dataTable中
    table.Columns.Add(column);
    //使用for循环,创建5个DataRow对象并添加到DataTable中
    DataRow newRow;
    for(int i=0;i<5;i++){
        newRow=table.NewRow();
        newRow[0]=i;
        table.Rows.Add(newRow);
    }
 
    //使用dataTable的AcceptChanges()方法,将更改提交到数据库中
    table.AcceptChanges();
 
    //开始操作DataRow中的每个对象
    foreach(DataRow row in table.Rows){
        //
        row.BeginEdit();
        row[0]=() row[0]+10
    }
    table.Rows[0].BeginEdit();
    table.Rows[1].BeginEdit();
    table.Rows[0][0]=100;
    table.Rows[1][0]=100;
    //终止对DataRow对象进行操作
    table.Rows[0].EndEdit();
    table.Rows[1].EndEdit();
}

4、使用Table名来访问DataTable

DataSet ds=new DataSet();
DataTable dt=new DataTable("myTableName");
//向DataSet的Table里添加一个dataTable,DataSet就是一个Table集合
ds.Tables.Add(dt);
//访问dataTable
//1、通过表名访问
ds.Tables["myTableName"].NewRow();

  

5、使用Rows属性访问数据记录

foreach(DataRow row in table.Rows){
    Row[0]=(int) row[0]+10;
}

  

6、使用Rows属性,访问指定行的指定字段

//首先为DataTable对象创建一个数据列
DataTable table=new DataTable("table1");
DataColumn column=new DataColumn("col1",Type.GetType("System.Int32"));
table.Columns.Add(column);
//其次为DataTable添加行数据
newRow=table.NewRow();
newRow[0]=10;
table.Rows.Add(newRow);
//设置索引行是0,列名是col1的数据
table.Rows[0]["col1"]=100;

7、综合使用DataRow和DataColumn访问DataTable内的数据

foreach(DataRow dr in dt.Rows){
    foreach(DataColumn dc in dt.Columns){
        //用数组访问数据
        Dr[dc]=100;
    }
}

8、使用DataSet和DataAdapter对象访问数据库

//省略获得连接对象的代码
...
//创建 DataAdapter
string sql="select*from student";
SqlDataAdapter sda=new SqlDataAdapter(sql,conn);
 
//创建并填充 Dataset
DataSet ds=new Dataset();
sda.fill(ds, "student");
 
//给 Dataset创建一个副本,操作对副本进行,以免因误操作而破坏数据
DataSet dsCopy=ds.Copy ();
DataTable dt=ds.Table["student"];
//对 Datalable中的 DataRow和 DataColumn对象进行操作
...
//最后将更新提交到数据库中
sda.update(ds, "student")

9、利用DataAdapter对象填充DataSet对象

private static string strConnect=" data source=localhost; uid=sa;pwd=123456;database=Stu";
string sqlstr="select * from student";
 
//利用构造函数,创建 DataAdapter
SqlDataAdapter da=new sqlDataAdapter(sqlstr, strConnect);
 
//创建 Dataset
DataSet ds=new DataSet();
 
//填充,第一个参数是要填充的 dataset对象,第二个参数是填充 dataset的 datatable表名
da.Fill(ds, "student");

10、使用DataAdapter对象,将DataSet中的数据更新到数据库

private static string strConnect ="data source=localhost;uid=sa;pwd=123456;database=Stu";
string sqlstr="select * from student";
 
//利用构造函数,创建DataAdapter
SqlDataAdapter da=new SqlDataAdapter(sqlstr,strConnect);
 
//创建DataSet
DataSet ds=new DataSet();
 
//填充,第一个参数是要填充的dataset对象,第二个参数是填充dataset的datatable表名
da.Fill(ds,"student");
 
//以下代码将更新DataSet里的数据
//在DataSet里的名为“student”的DataTable里添加一个用于描述行记录的DataRow对象
DataRow dr=ds.Tables["student"].NewRow();
 
//通过DataRow对象添加一条记录
dr["stuid"]="ID2";
dr["stuname"]="tom";
 
ds.Tables["student"].Rows.Add(dr);
 
//更新到数据库里
SqlCommandBuilder scb=new SqlCommandBuilder(da);
da.Update(ds,"student");

 

posted @ 2021-05-22 22:01  清语堂  阅读(722)  评论(0编辑  收藏  举报