您的位置:首页 > 数据库

Ado.net 用法浅析 (Sql Server)

2010-08-03 14:49 232 查看
首先,数据访问应用程序可以在两种环境下运行:1、连接环境下;2、非连接环境下。我们在使用之前一定要明确自己的应用程序的特点,然后了解下着两种环境的优缺点来选择使用。在介绍各种的使用之前,我们先来分析下他们各自的特点。

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映射。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: