【黑马程序员】6. ADO.NET

---------------------- 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);
               }
         }  
}


六、     SqlDataAdapterDataSet
的使用

  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")中参数的意思是把数据填充到dstable1里。

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.youkuaiyun.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值