• 那些年,我还在学ADO.NET


    那些年我还在学ADO.NET

      那些年学习了ASP.NET后又开始学习ASP.NET的新知识,ADO.NET用于访问数据库,一般可以分为连接模式和非连接模式。连接模式指的是在访问数据时,一直与数据库保持连接,访问完数据后才与数据库断开连接,主要采用的ADO.NET对象是Connection、Command、DataReader等;连接模式指的是通过数据集的方式对数据库进行操作,将数据读到内存中,从而完成数据的操作,数据集会自动更新到数据库,主要采用ADO.NET对象是DataAdapter、DataSet等。下面的我们就来看一下代码吧。

       本示例代码采用工厂模式的方式,这样就可以达到只改变少量的代码完成数据库之间的切换,工厂模式是要采用的对象有以下几个:DbProviderFactory、DbConnection、DbTransaction

    、DbCommand、DbDataReader、DbDataAdapter、DbCommandBuilder等。

     

    1、 共同的连接串

     

     string ProviderName = "System.Data.SqlClient";
            string ConnStr = "Data Source=.;Initial Catalog=Northind;Integrated Security=True";
            string sqlStr = "select * from dbo.Categories";
    

     

    2、 非连接模式代码如下:

     

     public void getSqlConnection()
    
            {
    
                //得到一个数据提供者,根据其传入的数据提供者对象
    
                DbProviderFactory dbf = DbProviderFactories.GetFactory(ProviderName);
    
                //创建连接
    
                DbConnection conn = dbf.CreateConnection();
    
                //连接字符串
    
                conn.ConnectionString = ConnStr;
    
                conn.Open();
    
                DbTransaction ts = conn.BeginTransaction();
    
                DbCommand dbcmd = null;           
    
                try
    
                {
    
                    dbcmd = dbf.CreateCommand();
    
                    dbcmd.CommandText = sqlStr;
    
                    dbcmd.Connection = conn;
    
                    dbcmd.Transaction = ts;
    
                    DbDataReader dr = dbcmd.ExecuteReader();
    
                    while (dr.Read())
    
                    {
    
                        Console.WriteLine(dr[1].ToString());
    
                    }
    
                    dr.Close();
    
                    ts.Commit();
    
                }
    
                catch (Exception e)
    
                {
    
                    ts.Rollback();
    
                }
    
                finally
    
                {
    
                    conn.Close();
    
                    if (dbcmd != null)
    
                    {
    
                        dbcmd.Dispose();
    
                    }
    
                }
    
            }
    

    效果:

     

     

    3、 连接模式代码:

          

      public void getDataSetConnection()
    
            {
    
                //得到一个数据提供者,根据其传入的数据提供者对象
    
                DbProviderFactory dbf = DbProviderFactories.GetFactory(ProviderName);
    
                //创建连接
    
                DbConnection conn = dbf.CreateConnection();
    
                //连接字符串
    
                conn.ConnectionString = ConnStr;
    
                //创建DataAdapter对象
    
                DbDataAdapter da = dbf.CreateDataAdapter();
    
                //创建自动生成sql语句对象
    
                DbCommandBuilder dbCmdb = dbf.CreateCommandBuilder();
    
                using (DbCommand dbcmd = dbf.CreateCommand())
    
                {
    
                    dbcmd.CommandText = sqlStr;
    
                    dbcmd.Connection = conn;
    
                    //DbDataAdapter指定命令
    
                    da.SelectCommand = dbcmd;
    
                    //DbCommandBuilder指定dataAdpter
    
                    dbCmdb.DataAdapter = da;
    
                    DataSet ds = new DataSet();
    
                    da.Fill(ds);
    
                    // ds.Tables[0].Rows[0].Delete();
    
                    da.Update(ds);
    
                    DataTable dt = ds.Tables[0];
    
                    DataRow dr;
    
                    for (int i = 0; i < dt.Rows.Count; i++)
    
                    {
    
                        dr = dt.Rows[i];
    
                       Console.WriteLine(dr[1] + "     " + dr[2]);
    
                    }
    
     
    
                }
    
            }
    

    效果:

     

     以上是一个简单的例子,在正常情况下,就不会把连接串写成字符串,应放在config文件中,同样SQL语句也会改为存储过程,这样改起来比较方便。

      总结

        那些年学习ADO.NET,基本了解了怎样去访问数据库,对其进行操作,现在.NET又有了一些新的方法,比如说使用Linq、DbContext等;此文以回忆那些年学习的日子。

  • 相关阅读:
    Something I know about WebDynpro
    Details about support package implementation
    CRM Middleware Performance Topics
    Way to configure the logon navigaion layouts via Business Roles in CRM
    DOM 常用节点类型和方法
    第一届 xdef 会议日程
    去除百度音乐盒广告的chrome插件 持续更新
    从人人网抓取高校数据信息,包括,省份 高校 院系 (提供最终SQL文件下载)
    PHP 与 JSON
    解决HTTPS 发送请求走socket问题
  • 原文地址:https://www.cnblogs.com/xin_ny/p/2373697.html
Copyright © 2020-2023  润新知