zoukankan      html  css  js  c++  java
  • 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+="
    ";
                }
     
                //关闭数据阅读器
                //无须关闭连接,它将自动被关闭
                reader.Close();
     
                //测试数据连接是否已经关闭
                if(conn.State==ConnectionState.Closed)
                {
                        message+="数据连接已经关闭
    ";
                }
                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");
  • 相关阅读:
    多线程,超时处理
    多线程,超时处理
    多线程,超时处理
    如何使用vue2搭建ElementUI框架
    pip 报错 ssl_.py:339: SNIMissingWarning: An HTTPS request has been made, but the SNI
    从单机到2000万QPS: 知乎Redis平台发展与演进之路
    OAuth2和JWT
    收集统计信息 不会更新DDL时间
    Python爬虫入门教程 8-100 蜂鸟网图片爬取之三
    Python爬虫入门教程 7-100 蜂鸟网图片爬取之二
  • 原文地址:https://www.cnblogs.com/wfy680/p/14799983.html
Copyright © 2011-2022 走看看