• ADO.NET笔记——使用通用数据访问


    相关知识:

    1. 前面所有示例,君是访问特定的数据库(SQL Server),因此注入SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter等类名都添加了“Sql”的前缀,并且隶属于System.Data.SqlClient命名空间。这就给代码的可移植性带来了巨大问题。如果数据库改用Oracle、MySQL或者BD2,代码几乎要全部重写,非常不利于重用。
    2. System.Data.Common命名空间提供了一组类和操作,使得程序可以忽略底层数据库的差异,进行统一的调用
      • DbProviderFactories:代表所有的数据提供程序
      • DbProviderFactory:代表某个特定的数据提供程序,例如:System.Data.SqlClient
      • DbConnection、DbCommand、DbDataReader:与数据库实现无关的对象类型
    3. 使用通用数据库访问,在很大程度上可以使数据访问代码与数据库无关

    主要代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Data;
     7 using System.Data.Common;
     8 
     9 namespace ConsoleApplication16
    10 {
    11     class Program
    12     {
    13         const string provider = "System.Data.SqlClient";
    14         const string strConn = @"server=Joe-PC;database=AccountDBforSQLInjection;uid=sa;pwd=root";
    15 
    16         static void Main(string[] args)
    17         {
    18             //获取数据提供程序工厂类
    19             DbProviderFactory factory = DbProviderFactories.GetFactory(provider);
    20 
    21             //通过工厂创建连接对象
    22             DbConnection conn = factory.CreateConnection();
    23             conn.ConnectionString = strConn;
    24 
    25             //通过工厂创建命令对象
    26             DbCommand cmd = factory.CreateCommand();
    27             cmd.Connection = conn;
    28             cmd.CommandText = "SELECT AccountID, AccountName, password FROM Account";
    29 
    30             try
    31             {
    32                 conn.Open();
    33                 DbDataReader dr = cmd.ExecuteReader();
    34 
    35                 while (dr.Read())
    36                 {
    37                     Console.WriteLine("{0}:{1},{2}", dr[0], dr[1], dr[2]);
    38                 }
    39             }
    40             catch (Exception e)
    41             {
    42                 Console.WriteLine(e);
    43             }
    44             finally
    45             {
    46                 conn.Close();
    47             }
    48         }
    49     }
    50 }
  • 相关阅读:
    Jquery制作--焦点图淡出淡入
    CSS3动画第二式--组合动画
    Jquery制作--焦点图左右轮播
    css3动画第一式--简单翻滚
    CSS属性小结之--半透明处理
    我为什么要加班?
    自写网站阶段之:终结篇
    this指向问题
    let,var,const之间的区别?
    session,cookie,sessionStorage,localStorage的区别
  • 原文地址:https://www.cnblogs.com/chenguangqiao/p/4373539.html
Copyright © 2020-2023  润新知