黑马程序员--ADO.net 的浅析

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

ADO主要用于数据库的访问。

可以把ADO.NET的基本类分为数据提供者对象和用户对象:

提供者对象:专用于每一种类型的数据源;完成数据源中实际的读取和写入工作。

包含的类有:Connection 、 Command 、CommandBuilder 、 DataReader 、 DataAdapter

用户对象:将数据读入到内存后用来访问和操纵数据的对象。

包含的类有:DataSet 、 DataTable 、 DataRow 、 DataColumn 、 DataRelation


提供者对象需要一个活动的连接(Connection),可以使用它们先读取(DataReader)数据,然后根据需要,通过用户对象(DataSet)使用内存中的数据,也可以使用提供者对象更新数据源中的数据,并将变动写回数据源中。用户对象以非连接方式使用;甚至在数据库连接关闭后,也可以使用使用内存中的数据.

每一个.NET数据提供者中定义的对象,其名称前带有特定提供者的名称,如OLE DB提供者的对象就是OleDbConnection ;用于SQL Server 就是SqlConnection。

下面以SQL SERVER的为例:

Sqlconection :

                    SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=
|DataDirectory|\text1.mdf;Integrated security=True;User Instance=True");//建立个连接,参数为连接字符串。
                    con.Open();
                    string abc = "打开成功";
                    label1.Text = abc;
                    con.Close();


SqlDataReader查询,是连接在服务器的上的查询,所以如果连接断开了,就工作不了。 

            string conn = @"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\text1.mdf;Integrated security=True;User Instance=True";
            using (SqlConnection con = new SqlConnection(conn))//建立数据库连接,参数是连接字符串
            {
                con.Open();
                using (SqlCommand cmd = con.CreateCommand())
                {
                    cmd.CommandText = "select * from [user]";
                    SqlDataReader sdr = cmd.ExecuteReader();  //建立个SqlDataReader对象
                    while (sdr.Read())   //while循环,
                    {   
                        string s=string.Format("姓名为{0},年龄:{1}",Convert.ToString( sdr["name"]),Convert.ToString (sdr[2]));
                        MessageBox.Show(s);
                    }
                    sdr.Close(); //后面必须加上个 Close()方法,关闭链接。
                }

DataSet:把服务器的数据输入到本机内存上,因此哪怕期间连接断开,还是可以操作,但后面的更新还是要有网络连接的。
数据库的"增减删改"

            string conn = @"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\text1.mdf;Integrated security=True;User Instance=True";
            using (SqlConnection con=new SqlConnection(conn))//建立数据库连接,参数是连接字符串
            {
                con.Open();   //打开数据库连接
                MessageBox.Show("数据库连接成功!");
                using(SqlCommand cmd=con.CreateCommand())
                {
                    cmd.CommandText="select * from [user] "; //定义sqlcommand查询语句;
                    SqlDataAdapter da=new SqlDataAdapter(cmd); //建立个sqlDataAdapter 
                    SqlCommandBuilder cb=new SqlCommandBuilder(da);//建立个SqlCommandBuilder,以DataSet为参数。可以包含“增减删改”的语句。
                    DataSet ds=new DataSet();
                    da.Fill(ds);//ds填充到 DataSet;这样数据就在内存里了;
                    DataTable dt = ds.Tables[0];//建立个DataTable并把DataSet的一个表赋值给他;
                    //【查询】,遍历表里面的姓名和年龄
                    foreach (DataRow dr in dt.Rows)
                    { 
                        string s=string.Format("姓名为{0},年龄:{1}",dr["name"],dr["age"]);//因为知道字段,直接引用
                        MessageBox.Show(s);
                    }
                    MessageBox.Show("查询结束");
                    //【修改】第一条数据的年龄.
                    MessageBox.Show("原来的年龄为:" + Convert.ToString(dt.Rows[0]["age"]));
                    dt.Rows[0]["age"] = "90";
                    //【删掉】
                    DataRow drd = dt.Rows[1];//指定第二条记录
                    drd.Delete();
                    //【插入】
                    DataRow drc = dt.NewRow();
                    drc["name"] = "ta";
                    drc["age"] = "30";
                    dt.Rows.Add(drc);
                    da.Update(dt);
                    MessageBox.Show("完成!");
                }
            }


最基本的操作吧,有些注意的地方:
1.有些表名要加 [ ] ,要不然会报语法错误。
2.表里要有主键。
3.要有 SqlCommandBuilder ,会根据Commandtext 自动生成 insert 、update 、delete 这些的command


Sqlcommand类的一些常用方法:
1.ExecuteReader :执行返回行的命令,返回个SqlDataReader.
2.ExecuteNonQuery:执行insert 、 delete 、update 及set 语句等命令。
3.ExecuteScalar:从数据库中检索单个值(例如一个聚合值):select count(*) from 表
4.ExecuteXmlReader:返回个XmlReader对象。

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值