首页 > 学院 > 开发设计 > 正文

ADO.NET

2019-11-17 03:19:15
字体:
来源:转载
供稿:网友

ADO.NET - 全面梳理

来源:http://www.VEVb.com/yangcaogui/archive/2012/06/09/2537086.html#9

目录:

  1. 简单的介绍下ADO.NET
  2. SqlConnection(连接对象)
  3. SqlCommand(命令对象)
  4. SqlParameter(Sql参数)
  5. SqlDataReader(数据流读取器)
  6. SqlTransaction(事务)
  7. SqlDataAdapter(数据适配器)
  8. DataSet,DataTable,DataRow,DataColumn
  9. 封装数据库操作类(这才是精华)

一丶简单的介绍下ADO.NET

  了解System.Data命名空间下我们常用的一些类:

复制代码
 1 ①System.Data  → DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint,DataColumnMapping,DataTableMapping 2 ②System.Data.Coummon     → 各种数据访问类的基类和接口 3 ③System.Data.SqlClient   → 对Sql Server进行操作的数据访问类 4   主要有:   a) SqlConnection            → 数据库连接器 5             b) SqlCommand               → 数据库命名对象 6             c) SqlCommandBuilder        → 生存SQL命令 7             d) SqlDataReader            → 数据读取器 8             e) SqlDataAdapter           → 数据适配器,填充DataSet 9             f) SqlParameter             → 为存储过程定义参数10             g) SqlTransaction           → 数据库事物
复制代码

二丶SqlConnection(连接对象)

  1.连接字符串

    基本语法:数据源(Data Source)+数据库名称(Initial Catalog)+用户名(User ID)+密码(PassWord)(这种方式比较安全)!

    推荐文章 :SQL Server 连接字符串和身份验证,你必须知道的ADO.NET(三) 连接字符串,你小觑了吗?,SQL Server 2008连接字符串写法大全,连接字符串有很多的写法,最保险的写法可以借助“SqlConnectionStringBuilder”类,它提供了全面的连接字符串的属性,以至于减少出错率(相关属性查MSDN),还有大多数连接字符串都写在配置文件里面了!

  2.创建连接对象

SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder(){DataSource = "",InitialCatalog = "",UserID = "",Password = ""};SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());复制代码
1 SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder()2  {3      DataSource = "",4      InitialCatalog = "",5      UserID = "",6      Password = ""7  };8 SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());
复制代码

  3.打开和关闭连接对象(使用Using来关闭连接)

1 using(SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString()))2 {3     connection.Open();4     connection.Close();5 }
1 using(SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString()))2 {3     connection.Open();4     connection.Close();5 }

    关于连接池的文章:你必须知道的ADO.NET(五) 细说数据库连接池(写的还真不赖啊),顶...

三丶SqlCommand(命令对象)

  1.实例化的时候默认初始化的四个属性

  2.创建命令对象

    使用连接对象的“CreateCommand()”方法创建命令对象,也可以使用new来实例化对象!

1 SqlCommand command = connection.CreateCommand(); //这种方式比较好,也可以自己实例化一个对象!

  3.几个重要属性

    ①CommandText:获取或设置要对数据源执行的 Transact-SQL 语句、表名或存储过程!

    ②CommandType:设置你执行的SQL语句是存储过程还是T-SQL(是一个枚举)!

    

    ③Parameters:设置你T-SQL中你需要用到的参数(后面会讲到),是一个“SqlParametersCollection”类型,这个属性很重要,是你通过代码给SQL语句传递参数的途径,所以记住语法,记住一些使用规则讲对编码有很大的帮助!

  4.几个重要的方法(相信大家熟悉的不能再熟悉了)

    ①ExecuteNonQuery:返回是影响的行数(int),主要执行更新,添加,删除等操作!

    ②ExecuteReader:执行SQL或存储过程,返回的是SqlDataReader类型,主要用来查询!

      ★ 这边注意这个方法的重载 CommandBehaviour 枚举,成员如下:

    

1 command.ExecuteReader(CommandBehavior.CloseConnection); //在执行读取之后会自动关闭连接对象

   ③ExecuteScalar:返回执行结果集中的第一行第一列,如果没有数据,则返回NULL!

    Note:因为可能会返回“Null”值,所以需要对结果进行判断,如下:

1         object my = cmd.ExecuteScalar();2                 if (object.Equals(my,null))  //可以使用Equals进行Null值的判断,易读性强3                     Console.WriteLine("Not Data");4                 else5                     Console.WriteLine("Yes");
1         object my = cmd.ExecuteScalar();2                 if (object.Equals(my,null))  //可以使用Equals进行Null值的判断,易读性强3                     Console.WriteLine("Not Data");4                 else5                     Console.WriteLine("Yes");

    ④CreateParameter:创建SqlParameter实例

1 SqlParameter para = cmd.CreateParameter() //此方法适合SQL语句中只有一个参数的情况!

    推荐文章:你必须知道的ADO.NET(六) 谈谈Command对象与数据检索

         你必须知道的ADO.NET(七) Wow!Command对象高级应用

四丶SqlParameter(Sql参数)

  1.几个重要的属性    

  ParameterName: 设置参数名

  Value:   给参数设置值

    Size:    设置参数字节最大大小(以字节为但为)

    SqlDbType:    参数在SQL中的类型  

SqlParameter paras = new SqlParameter() { ParameterName = "@name", Value = 10, SqlDbType = SqlDbType.Int, Size = 4 };

复制代码
1             SqlParameter paras = new SqlParameter()2              {3                     ParameterName = "@name",4                     Value = 10,5                     SqlDbType = SqlDbType.Int,6                     Size = 47              };
复制代码

  2.命令对象添加参数集合的几种方法

    ①AddWithValue

    ②Add

    ③AddRange

    推荐文章:SqlParameter的作用与用法,代码如下:

复制代码
 1  using (SqlConnection connection = new SqlConnection("")) 2  { 3      SqlCommand command = connection.CreateCommand(); 4      command.CommandText = ""; 5  6      //可以使用这种方式添加多个参数,不过方式不够好 7      command.Parameters.Add("@name", SqlDbType.NVarChar).Value = "yang"; //第一种方式 8      command.Parameters.Add("@age", SqlDbType.Int).Value = 888; 9      command.Parameters.Add("@address", SqlDbType.NVarChar, 100).Value = "Jiang Su";10 11      //这种方式直接给定参数名和参数就可以了,可操作性比较差12      command.Parameters.AddWithValue("@name", "yang");13      command.Parameters.AddWithValue("@age", 888).SqlDbType = SqlDbType.Int;14      command.Parameters.AddWithValue("@address", "Jiang su").SqlDbType = SqlDbType.NVarChar;15 16      //直接使用参数集合添加你需要的参数,推荐这种写法17      SqlParameter[] parameters = new SqlParameter[]18      {19          new SqlParameter("@name",SqlDbType.NVarChar,100){Value = "yang"},20          new SqlParameter("@age",SqlDbType.Int,2){Value = 888},21          new SqlParameter("@address",SqlDbType.NVarChar,20){Value = "Jiang Su"}, 22      };23      command.Parameters.AddRange(parameters);  //参数也可以是一个Array数组,如果采用数组参数代码的可读性和扩展性就不是那么好了24 25      //当我们把参数都添加好之后,会生成一个“SqlParameterCollection”集合类型,相当于参数的集合26      //那么我们就可以对这些参数进行修改和移除了27      //说穿了“SqlParameterCollection”内部其实是一个List<SqlParameter>的集合,只是它里面的复杂度比较高,考虑的很全面28      command.Parameters[0].Value = "hot girl";29      command.Parameters[0].Size = 200;30  }
复制代码

  3.说说“SqlParameterCollection”,参数集合

    上面添加的“SqlParameter”参数都被添加到了“SqlParameterCollection”集合中去了,所以我们才能够对它进行读取和修改!

  4.定义适当的参数属性获取存储过程的返回值(return) →Direction = Paramet

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表