【黑马程序员】6. ADO.NET
来源:互联网 发布:淘宝差评申诉成功几率 编辑:程序博客网 时间:2024/05/19 20:41
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
一、 ADO.NET基础
在.net框架下程序和数据库之间进行交互操作,使用的技术叫ADO.NET。通过ADO.NET就能在程序中执行SQL语句了,ADO.NET提供了对各种数据库的统一操作接口。
直接在项目中添加.mdf文件的方式使用数据库的步骤:右击项目名è添加è新建项è数据库è基于服务的数据库。双击.mdf文件会在“服务器资源管理器”中打开.mdf文件,操作方式和在Management Studio中没有什么本质不同。要拷贝.mdf文件需要关闭所有指向.mdf文件的链接。和在数据库服务器上创建数据库没什么区别,运行的时候会自动附加(Attach)到SQL Server上。
二、 ADO.NET五大对象
SqlConnection:用于创建程序到数据库的连接,一个SqlConnection对象代表一个到数据库的连接。要连接到哪个数据库,需要使用哪种身份认证信息等,这些信息就组成了“连接字符串”。SqlConnection有两非常重要的方法:Open():打开程序到数据库的连接,Close()关闭连接,注意连接Close之后可以再次调用Open()方法打开。
SqlCommand:负责发送命令(SQL语句)给数据库并得到执行结果的。它有一个重要的属性:CommandText,要发送的SQL语句。ExecuteNonQuery()方法发送的是更新、删除、增加的命令,而用此方法发送查询命令的时候数据库并不执行。ExecuteReader()方法专门用来发送查询命令。
SqlDataReader:对于这个类,官方给出的解释是:提供一种从Sql Server数据库读取行的只进流的方式。对这个解释多少有些不理解。它有一个非常重要的方法:Read()方法,官方解释是:使SqlDataReader前进到下一条记录。SqlDataReader可以对返回的数据进行操作,但只是只读的,而且必须要保持与数据库的连接才行.
SqlDataAdapter:官方的解释是:表示用于填充DataSet和更新SQL Server数据库的一组命令和一个数据库连接。它可以把数据库里的数据读出来,然后把这些数据一次性就装到DataSet中,而且还可以把DataSet中的数据一次性更新到数据库里。之所以它能做到这些,因为它有个重要的方法叫SqlDataAdater.Fill(),调用这个方法就可以把数据填充到DataSet中。
DataSet:官方的解释叫做:表示数据在内存中的缓存。dataset其实相当于一个小型的离线的数据库,只不过是在内存中的。dataset有两大部分组成:表与关系.表就是datatable,关系就是Relation。
三、 连接SQL Server
ADO.Net中的连接类都实现了IDisposable接口,可能使用using进行资源的释放。
示例代码:
//定义连接字符串stringstrConn=@"DataSource=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"; using (SqlConnection conn = new SqlConnection(strConn)) //new一个连接的对象
{ conn.Open();//打开数据库连接 MessageBox.Show("连接成功!");}
注意:using可以确保在其using内部时连接始终是打开的,出了using这个范围以后自动调用Dispose方法来释放连接所占用的所有资源。
四、执行简单的数据插入
//定义连接字符串stringstrConn=@"DataSource=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";using (SqlConnection conn = new SqlConnection(strConn)) //new一个连接的对象
{ conn.Open();//打开数据库连接 //简单的插入数据 string sqlCmd = @"Insert into Employees(employeeid,firstname,city,country)values(003,'李四','北京','中国')"; //使用指定的连接new一个发送命令的SqlCommand对象 using (SqlCommand cmd = new SqlCommand(sqlCmd, conn)) { int i = cmd.ExecuteNonQuery();//将Sql语句发送给数据库并由数据库执行插入 MessageBox.Show(i + "条数据插入成功!"); }}
五、执行简单的查询
//定义连接字符串stringstrConn=@"DataSource=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";using (SqlConnection conn=newSqlConnection(strConn)) //new一个连接的对象
{ conn.Open();//打开数据库连接 MessageBox.Show("连接成功!"); //简单的查询数据 string sqlCmd="select employeeid,firstname,city,country from Employees"; //使用指定的连接new一个发送命令的SqlCommand对象 using (SqlCommand cmd=newSqlCommand(sqlCmd, conn)) { //创建一个SqlDataReader对象用来接收cmd.ExecuteReader()的执行结果 SqlDataReader reader=cmd.ExecuteReader(); //通过reader.Read()方法来逐行向下读取SqlDataReader中的数据 while(reader.Read()) { //获取指定列32位有符号整数的值 int id=reader.GetInt32(reader.GetOrdinal("employeeid")); //获取指定列的字符串形式的值 string name=reader.GetString(reader.GetOrdinal("firstname")); string city=reader.GetString(reader.GetOrdinal("city")); MessageBox.Show("employeeid="+id+",firstname="+name+",city="+city); } } }
六、 SqlDataAdapter和DataSet的使用
SqlDataAdapter类,可以把数据库里的数据读出来,然后把这些数据一下就装到了dataset中.而且还可以把dataset里的数据一下又装到数据库里(或更新到数据里)。它有个重要的方法叫:SqlDataAdater.Fill(...).调用这个方法的时候就可以把数据填充到dataset里的。SqlDataAdapter能自动打开到数据库的连接。
SqlDataAdater怎么从数据库里得到数据呢?看下面一段代码:
//定义连接字符串string strConn = @"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf; Integrated Security=True;User Instance=True";string sqlcmd = "select employeeid,firstname,city,country from Employees";using (SqlConnection conn = new SqlConnection()){ DataSet ds = new DataSet(); //用指定的sql语句和连接来new一个SqlDataAdapter 对象 SqlDataAdapter sda = new SqlDataAdapter(sqlcmd,conn); //开始发送命令(SqlCommand)给数据库,把返回的数据填充到dataset里的表名叫table1的表里 sda.Fill(ds, "table1"); //上面已经把ds里的table1填充上数据了,所以可以绑定到table1 GridView1.DataSource = ds.Tables["table1"].DefaultView; GridView1.DataBind();}
注:
上述代码中没有调用cn.open()方法,是因为SqlDataAdapter能自动打开到数据库的连接。
sda.Fill(ds, "table1")中参数的意思是把数据填充到ds的table1里。
sda.Fill(ds, "table1")方法还需要完成的事有:
1、打开到数据库的连接;
2、发送SqlCommand到数据库;
3、 把数据库返回的数据填充到DataSet中,还指定了往DataSet的哪个表中放数据,如果没有指定的表就自动创建一个名叫table1的表;
4、关闭数据库连接。
七、 映射
//定义连接字符串string strConn=@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf; Integrated Security=True;User Instance=True";string sqlcmd = "select employeeid,firstname,city,country from Employees";using (SqlConnection conn = new SqlConnection()){ DataSet ds = DataSet(); //用指定的sql语句和连接来new一个SqlDataAdapter 对象 //添加一个映射,源表名为:employees,dataset里表名称为:table1 SqlDataAdapter sda = new SqlDataAdapter(sqlcmd,conn); sda.TableMappings.Add("Employees", "table1"); //字段名称的对应关系 da.TableMappings[0].ColumnMappings.Add("employeeid", "id号"); da.TableMappings[0].ColumnMappings.Add("firstname", "姓名"); da.TableMappings[0].ColumnMappings.Add("city", "城市"); da.TableMappings[0].ColumnMappings.Add("country", "国家"); //如果添加了映射,那么sda.Fill(ds,源表名)方法的第二个参数必须和 //sda.TableMappings.Add("Employees", "table1")第一个参数相同sda.Fill(ds, "Employees");GridView1.DataSource = ds.Tables["table1"].DefaultView;GridView1.DataBind();}
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
- 【黑马程序员】6. ADO.NET
- 黑马程序员-Ado.Net
- 黑马程序员-ADO.Net
- 黑马程序员-ADO.NET
- 黑马程序员 ADO.net
- 黑马程序员-ADO.net
- 黑马程序员-----ADO.NET
- 黑马程序员--ADO.NET
- 【黑马程序员】ADO.NET
- 【黑马程序员】ADO.net
- 黑马程序员 ado.net
- 黑马程序员《.NET ADO.NET》
- 黑马程序员 ADO.Net数据库连接
- 黑马程序员--笔记:ADO.Net
- 【黑马程序员】Ado.Net入门
- 黑马程序员-ADO.NET入门
- 黑马程序员-ADO.Net基础
- 黑马程序员—ADO.NET
- MFC中的CDC类
- linux 系统监控、诊断工具之 lsof 用法简介
- WPF和WindowsForm下的按下Enter跳转下一个控件通用方法
- monkey参数使用方法和示例
- C++桥接设计模式(impl)
- 【黑马程序员】6. ADO.NET
- 10.交通灯管理系统
- Symmetric Tree
- js 项目框架
- SharePoint 2013的100个新功能之网站管理(一)
- KM算法模板
- Practice Conflict Resolution
- C++中引用(&)的用法和应用实例
- 迭代器失效