Ado.net 用法浅析 (Sql Server)
2010-08-03 14:49
232 查看
首先,数据访问应用程序可以在两种环境下运行:1、连接环境下;2、非连接环境下。我们在使用之前一定要明确自己的应用程序的特点,然后了解下着两种环境的优缺点来选择使用。在介绍各种的使用之前,我们先来分析下他们各自的特点。
1、连接环境
@优点:环境易于实施安全控制;同步问题易于控制;数据实时性
@缺点:必须保持持续的连接性;扩展性差
2、非连接环境
@优点:可以在任何需要的时间进行操作,在必要时才连接到数据源;不独占连接;提高了应用扩展性与性能
@缺点:数据不是实时的;必须解决数据的并发性与同步问题
那说到这里,简单介绍下Sql各个连接字符串的意义:
Data Source 或 Server 或 Network Address :要连接的实例名称或者网络地址
Database 或 Initial Catalog :数据库的名称
Integrated Security :当为false 时,将在连接中指定用户 ID 和密码。当为true时,将使用当前的 Windows 帐户凭据进行身份验证。
可识别的值为true/false/yes/no 以及与true 等效的SSPI
恩,不推荐用id和passwd登录方式,这样容易造成密码外泄。可以用windows验证,然后Security设置成SSIP即可
其他的Access或者soso的方式参考:http://www.leadbbs.com/MINI/Default.asp?205-2540309-0-0-0-0-0-a-.htm
2. 声明查询数据库的SqlCommand对象,用于执行SQL语句;
当然,你可以自定义自己的Sql语句了。
3. 声明数据阅读器SqlDataReader对象,打开SqlConnection对象连接,并通过SqlCommand的ExecuteReader方法将结果返回给SqlDataReader对象;
4. 自由处理SqlDataReader阅读器所获得的数据!
2. 此时,需要额外声明数据适配器SqlConnection对象链接。这个就相当于我们本地无链接数据和server数据库之间的一个桥接器,那可以通过这个桥接器和server进行互通,不管是Load还是Update都行。
3. 那,建立了适配器之后呢,我们就要在内存中建立这个存储无连接数据的容器了。也就是DataSet容器,然后通过SqlDataAdapter中的Fill方法来填充Sql语句中筛选的内容给DataSet。
Fill方法的调用会在DataSet中创建一个新的tableXX,并在该table中包含着于查询返回的列相对应的列项,当然是与数据库中一一对应的。但是有时候想要自定义的本地table中的列项怎么办呢?在DataAdapter对象中的TableMappings集合可以建立这样的数据库和本地数据的映射关系。
4. 假设数据库中存在表tbA,并含有列项colA1,colA2,那如果想在本地得到ds对应的表名为自定义的tbB,对应自定义的列项colB1,colB2怎么办呢?我们可以这样建立映射:
通过上面的设置就建立了mapping映射。
1、连接环境
@优点:环境易于实施安全控制;同步问题易于控制;数据实时性
@缺点:必须保持持续的连接性;扩展性差
2、非连接环境
@优点:可以在任何需要的时间进行操作,在必要时才连接到数据源;不独占连接;提高了应用扩展性与性能
@缺点:数据不是实时的;必须解决数据的并发性与同步问题
一、连接环境ADO.NET
1. 声明连接到SQL Server数据库的SqlConnection对象,并添加连接字符串属性;SqlConnection Mycon = new SqlConnection(); Mycon.ConnectionString = "Data Source=(local);Database=ADOnet;Integrated Security=SSPI;";
那说到这里,简单介绍下Sql各个连接字符串的意义:
Data Source 或 Server 或 Network Address :要连接的实例名称或者网络地址
Database 或 Initial Catalog :数据库的名称
Integrated Security :当为false 时,将在连接中指定用户 ID 和密码。当为true时,将使用当前的 Windows 帐户凭据进行身份验证。
可识别的值为true/false/yes/no 以及与true 等效的SSPI
恩,不推荐用id和passwd登录方式,这样容易造成密码外泄。可以用windows验证,然后Security设置成SSIP即可
其他的Access或者soso的方式参考:http://www.leadbbs.com/MINI/Default.asp?205-2540309-0-0-0-0-0-a-.htm
2. 声明查询数据库的SqlCommand对象,用于执行SQL语句;
SqlCommand myCmd = new SqlCommand("select * from stud", Mycon);
当然,你可以自定义自己的Sql语句了。
3. 声明数据阅读器SqlDataReader对象,打开SqlConnection对象连接,并通过SqlCommand的ExecuteReader方法将结果返回给SqlDataReader对象;
Mycon.Open(); SqlDataReader myReader = myCmd.ExecuteReader();//执行Sql并返回结果
4. 自由处理SqlDataReader阅读器所获得的数据!
while(myReader.Read()) //循环读取数据 { Console.WriteLine(myReader.GetString(0));// 获取指定列的字符串形式的值 Console.WriteLine(myReader. GetValue(1));// 获取以本机格式表示的指定列的值 } GridViewxx.DataSource = myReader;//或者赋给GridView myReader.Close();//最后记得关闭!! Mycon.Close();
二、在无连接环境中使用ADO.NET
1. 需要同样声明连接到Server的SqlConnection对象并添加链接字符串,接着打开SqlConnection对象链接。SqlConnection myCon = new SqlConnection(); myCon.ConnectionString = "Data Source=(local); Initial Catalog=ADOnet;Integrated Security=SSPI"; myCon.Open();
2. 此时,需要额外声明数据适配器SqlConnection对象链接。这个就相当于我们本地无链接数据和server数据库之间的一个桥接器,那可以通过这个桥接器和server进行互通,不管是Load还是Update都行。
SqlDataAdapter mySda = new SqlDataAdapter("select * from students", myCon);
3. 那,建立了适配器之后呢,我们就要在内存中建立这个存储无连接数据的容器了。也就是DataSet容器,然后通过SqlDataAdapter中的Fill方法来填充Sql语句中筛选的内容给DataSet。
SqlDataAdapter da = new SqlDataAdapter(strSql, cn); DataSet ds = new DataSet("tableXX"); da.Fill(ds);
Fill方法的调用会在DataSet中创建一个新的tableXX,并在该table中包含着于查询返回的列相对应的列项,当然是与数据库中一一对应的。但是有时候想要自定义的本地table中的列项怎么办呢?在DataAdapter对象中的TableMappings集合可以建立这样的数据库和本地数据的映射关系。
4. 假设数据库中存在表tbA,并含有列项colA1,colA2,那如果想在本地得到ds对应的表名为自定义的tbB,对应自定义的列项colB1,colB2怎么办呢?我们可以这样建立映射:
SqlDataAdapter da; DataTableMapping TbMap; DataColumnMapping ColMap; TbMap = da.TableMappings.Add("tbA", "tbB"); ColMap = TbMap.ColumnMappings.Add("colA1", "colB1"); ColMap = TbMap.ColumnMappings.Add("colA2", "colB2");
通过上面的设置就建立了mapping映射。
相关文章推荐
- ADO.NET中与SQL Server连接类
- SQL Server 连接池 (ADO.NET)
- 黑马程序员-自学笔记-SQL Server与ADO.Net(一)
- SQL Server 2000+ADO.NET实现并发控制
- ADO.Net 浅析(五)-ADO对象之---连接对象
- Sql server 事务的用法 .net
- SQL Server 2000+ADO.NET实现并发控制...(三)
- (原創) 我該每次存取SQL Server後,就關閉Connection?還是等關閉網頁後再一次關閉Connection? (初級) (.NET) (ADO.NET) (SQL Server)
- 事务的使用(ADO.NET和SQL SERVER)
- ado.net连接不上sql2008:provider: 命名管道提供程序, error: 40 - 无法打开到SQL Server的连接
- SQL Server 2008中文版标准教程读书笔记 ADO.NET(复习SQL Server 九)
- android学习系列-JDBC连接SQL server与ADO.NET连接Sql Server对比(4)
- 有关ado.net中与sql server的连接
- SQL Server与ADO.Net数据类型对照
- 黑马程序员-自学笔记-SQL Server与ADO.Net(二)
- ADO.NET中的多数据表操作浅析
- ADO.NET中的视图和过滤器(详解DataView用法) 〖技术交流〗
- Microsoft ADO(ActiveX Data Object)用法浅析
- ADO.NET对象DataTable基本用法详解
- Microsoft ADO(ActiveX Data Object)用法浅析