---------------------- 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培训、期待与您交流! ----------------------