ADO.NET 基础入门01

ADO.NET的核心类

  1. DataSet 独立于任何数据源的数据访问,数据源的数据暂存到DataSet中,对于用户来说,使用DataSet访问数据时,数据源是透明的。
  2. Data Provider 用于连接数据库、执行命令、检索结果。
  3. Connection 提供与数据源的连接
  4. Command 执行数据库命令对象
  5. DataReader 从数据圆中提供快速的只读的数据流
  6. DataAdapter 提供DataSet对象与数据源的桥梁

连接池

1.由于建立连接时耗时耗力(建立物理通道,与服务器初次握手,身份验证,运行检查等等,

ADO.NET为我们引入了连接池的概念。

连接池中存放了一定数量的与数据库服务器的物理连接。当我们需要连接时,从连接池中取出一条空闲的连接,而不是创建一条新的连接。使用完后关闭该连接后,该连接又会重新回到连接池中。这样就能有效减少连接数据库的开销。

2.分类。同一时刻同一应用程序域可以有多个不同类型的连接池。对于同一程序域来说,由连接字符串来区分。即如果连接字符串不同,那么就会有不同的连接池。

3.如何分配。

根据连接请求的类型,找到与它相匹配的连接池,如果有,尽力分配一条空闲连接,返回这条连接,如果没有,则会创建一个新的连接添加到连接池中。如果达到了最大连接数,则会等到,直到有空闲连接可用。

4.移除无效连接。不能正确的连接到数据库服务器的连接,由于连接池存储的与数据库服务器的连接数量是有限的,需要及时移除,否则会浪费资源空间。

5.测试连接池的存在。默认情况下,Ado.Net默认是启用连接池的。

 连接字符串是可以控制连接池的行为的。

 Max Pool Size:最大连接数

 Min Pool Size:最小连接数

 Pooling 是否启用连接池 true

6.使用SqlCommand来执行SQL语句或存储过程,对于存储过程一定是事先在数据库中已经写好的存储过程。

7.连接使用时的注意事项,即最晚打开,最早关闭。

8.ExecuteNonQuery方法、ExecuteScalar方法、ExecuteReader方法的区别

ExecuteNonQuery(): SQL语句是对数据库的记录进行操作(如记录的增加、删除和更新),方法将返回操作所影响的记录条数。

ExecuteScalar(): SQL语句是SELECT查询,则仅仅返回查询结果集中的第1行第1列,而忽略其他的行 和列。该方法所返回的结果为object类型,在使用之前必须强制转换为所需的类型。如果SQL语句不是SELECT查询,则返回结果没有任何作用。

ExecuteReader():提供了一个流的概念用于实时从数据库中读取数据,所以必须保证该方法调用前不能关闭数据库连接。返回的DataReader 对象可用于读取多条数据。

以下是访问存储在局域网中某台计算机上的mysql数据:

            //连接数据库,mysql数据库存放在192.168.0.103上
            string connectstr = "Server=192.168.0.103;Port=3306;database=test;UserId=merlinzjl;Password=qwer15751002481_Zjl";
            using (MySqlConnection mysqlconnection = new MySqlConnection(connectstr))
            {
                mysqlconnection.Open();

                string text = "SELECT * FROM user where sex=@sexval";
                MySqlParameter[] paramters = new MySqlParameter[1];
                paramters[0] = new MySqlParameter();
                paramters[0].ParameterName = "@sexval";
                paramters[0].Value = "f";

                MySqlCommand sqlcmd = new MySqlCommand(text,mysqlconnection);
                sqlcmd.Parameters.Add(paramters[0]);

                MySqlDataReader reader = sqlcmd.ExecuteReader();

                while(reader.Read())
                {
                    Console.WriteLine(reader[0] + "," + reader["sex"]);
                    Console.WriteLine("--------------------------------");
                }

                mysqlconnection.Close();
            }

  

原文地址:https://www.cnblogs.com/merlinzjl/p/14165820.html