

ADO.net由DataSet和Data Provider组成
DataSet:非连接的核心组件。独立于任何数据源的数据访问,所以可访问各种数据库
Data Provider:用于连接数据库、执行命令、检索结果
Ado.Net 概述
->SqlConnection
->连接池:可以通过连接字符串配置连接池
->对象池技术:HttpApplication :Asp.net
->生产者 消费者 线程
->SqlCommand
->ExcuteNonQuery() 执行非查询类的sql脚本,返回影响的行数
->ExcuteScalar() 执行sql,返回第一行第一列的值
->ExcuteReadr() 返回SqlDataReader
->Reader 默认指向 数据行
->Read() 方法执行一次,指针向下走一次
命名空间
SQLServer数据提供程序 System.Data.SqlClient
OLEDB的数据提供程序 System.Data.Oledb
ODBC的数据提供程序 System.Data.Odbc
Oracle数据提供程序 System.Data.OracleClient
函数
Connection 提供与数据源的连接 SqlConnection
Command 执行数据库命令的对象 SqlCommand
DataReader 从数据源中提供快速的,只读的数据流 SqlDataReader
DataAdapter 提供DataSet对象与数据源的桥梁。Fill Update
Ado.Net访问数据的步骤
1、连接到数据库
- SqlConnection conn = new SqlConnection();
- //Sql server身份验证(安全连接) 1、数据源 2、数据库名 3、账号 4、密码
- conn.ConnectionString = "server=.;database=TblClass;uid=sa;pwd=123456";
- //Windows身份验证(可信连接) 1、数据源 2、数据库名 3可信连接(Integrated Security=True/SSPI)
- conn.ConnectionString = "server=.;database=MySecondDb;Integrated Security=SSPI";
- //conn.Databass 要连接的数据库名称
- //conn.DataSource 数据库所在服务器的名称
- //conn.State 连接的状态
- //conn.ConnectionTimeout 15s
connection.State //可以查看连接信息
connection.Database //可以查看连接的数据库名
connection.ServerVersion //可以查看连接的Sql Server的版本(注意:查询这个需要在打开连接之后,不打开连接默认是关闭的)
connection.ConnectionTimeout //查看超时时间(默认超时时间15秒,超过15秒没有连上就会报错),要想加长超时时间可以在字符串里加 timeout=30
2、打开连接
conn.Open();
3、创建执行命令对象(创建命令)
- SqlCommand sqlCommand = new SqlCommand();
- //设置连接对象,也就是这条sql命令该在哪个服务器,哪个数据库中去执行
- sqlCommand.Connection = connection;
- //设置sql命令
- string sql = "insert into Students(name,Age) values('文豪','a')";
- sqlCommand.CommandText = sql;
-
-
- //也可以直接使用构造函数
- string sql2 = "insert into Students(name,Age) values('豪文','a')";
- SqlCommand cmd = new SqlCommand(sql2, connection);
4、执行命令
- //执行非查询类(增删改)的sql脚本,返回影响的行数
- sqlCommand.ExecuteNonQuery();
-
- //执行sql,返回第一行第一列的值,一般获总条数
- sqlCommand.ExecuteScalar("select count(*) from Students",connection);
-
- //执行sql返回数据
- SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();


5、关闭连接
- //关闭连接
- conn.Close(); //Close()后还可以再打开
-
-
- //释放连接
- conn.Dispose(); //Dispose后,连接字符串也没有,重新设置练级字符串
有的时候可能会忘记close,这时候可以使用 using。用了using之后无需close
GC(垃圾回收器)只能回收托管资源。SqlConnection属于非托管资源,故需要手动释放
实现了IDisposable接口的函数才能在using里面实现
- using (SqlConnection connection = new SqlConnection(str))
- {
- connection.Open();
- Console.WriteLine(connection.State);
- Console.WriteLine(connection.Database);
- Console.WriteLine(connection.ServerVersion);
- Console.WriteLine(connection.ConnectionTimeout);
- }