C# 连接SQL数据库、常用的连接字符串讲解、常用的数据库操作方法

  1. using  System;   
  2. using  System.Collections.Generic;   
  3. using  System.Text;   
  4. using  System.Data.SqlClient;   
  5. using  System.Data;   
  6. namespace  My_Connection   
  7. {   
  8.      class  DbConn   
  9.     {   
  10.          private   const   string  ConnString =  "server=localhost;integrated security=sspi;database=pubs;" ;   
  11.          //---------------------常用的连接字符串参数-------------------------------------------------   
  12.          //server=locahost或 . 登录服务器地址这里是本地   
  13.          //Data Source   
  14.          //Address   
  15.          //Addr   
  16.          //Network Address   
  17.          //integrated security=sspi或true 以Windows当前身份登录   
  18.          //uid=sa; 登录用户名:sa   
  19.          //pwd=sa;   登录密码:sa   
  20.          //Connect Timeout=15 //设置连接等待时间,以秒为单位   
  21.          //Trusted_Connection=True 设置信任连接   
  22.          //Asynchronous Processing=true 设置异步访问数据库,默认关闭   
  23.          //MultipleActiveResultSets=True 在单个连接上得到和管理多个、仅向前引用和只读的结果集(ADO.NET2.0,SQL 2005)   
  24.          //database=pubs 或 Initial Catalog=pubs 指定数据库:pubs   
  25.          //Max Pool Size 最大连接数   
  26.          //Min Pool Size 最小连接数          
  27.          //Pooling 当设置为true时,SQL连接将从连接池获得,如果没有则新建并添加到连接池中,默认是true.false则不设连接池   
  28.          //Connection Lifetime 在连接池中应用,指定一个连接处于close后的生存时间大于指定时间并属于最小连接数以外的将自动消毁           
  29.          //Application Name 应用程序名称或者当没有提供应用程序时为.Net SqlClient数据提供者   
  30.          //Connection Reset true 当连接从连接池移走时决定是否重置数据库连接.当设置为 false 时用于避免获得连接时的额外服务器往复代价   
  31.          //Enlist true 为真时,连接池自动列出创建线程的当前事务上下文中的连接   
  32.          //Workstation ID 指定工作组的名称   
  33.          //Packet Size= 就是设置网络数据包的大小值,默认为8192   
  34.          //Network Library 设置网络连接协议   
  35.   
  36.          //当通过SQLOLEDB提供者进行连接时使用以下语法:   
  37.          //Network Library=dbmssocn   
  38.          //但通过MSDASQL提供者进行连接时使用以下语法:   
  39.          //Network=dbmssocn    
  40.   
  41.          //名称           网络协议库   
  42.          //dbnmpntw Win32 Named Pipes   
  43.          //dbmssocn Win32 Winsock TCP/IP   
  44.          //dbmsspxn Win32 SPX/IPX   
  45.          //dbmsvinn Win32 Banyan Vines   
  46.          //dbmsrpcn Win32 Multi-Protocol (Windows RPC)   
  47.          //------------------------连接字符串示例  -----------------------------------------------------------------------------   
  48.          //通过IP地址连接,必需确保SQL服务器开启1433端口和检查SQL网络连接启用TCP/IP协议   
  49.          //Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;    
  50.          //默认情况下, SQL服务器的微软.NET框架数据提供者设置网络包大小对8192个字节.   
  51.          //然而这不一定是最好的,你可以根据你觉的合适的包大小设置包的大小   
  52.          //Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;Packet Size=4096;    
  53.          //-----------------------------------------------------------------------------------------------   
  54.          //因为考虑到实现复杂业务逻辑时,需要同进使用GetDataReader、GetDataAdapter、GetTransaction等   
  55.          //连接那里会变得麻烦,所以区分定义三种方式的连接对象   
  56.          private  SqlConnection SqlDrConn =  new  SqlConnection(ConnString);   
  57.          private  SqlConnection SqlDaConn =  new  SqlConnection(ConnString);   
  58.          private  SqlConnection SqlTrConn =  new  SqlConnection(ConnString);   
  59.   
  60.          public  DataTable GetDataReader( string  StrSql) //数据查询   
  61.         {   
  62.              //当连接处于打开状态时关闭,然后再打开,避免有时候数据不能及时更新   
  63.              if  (SqlDrConn.State == ConnectionState.Open)   
  64.             {   
  65.                 SqlDrConn.Close();                   
  66.             }   
  67.              try   
  68.             {   
  69.                 SqlDrConn.Open();   
  70.                 SqlCommand SqlCmd =  new  SqlCommand(StrSql, SqlDrConn);   
  71.                 SqlDataReader SqlDr = SqlCmd.ExecuteReader();   
  72.                  if  (SqlDr.HasRows)   
  73.                 {   
  74.                     DataTable dt =  new  DataTable();   
  75.                      //---------------Method 1-------------------   
  76.                      //for (int i = 0; i < SqlDr.FieldCount; i++)   
  77.                      //{   
  78.                      //    dt.Columns.Add(SqlDr.GetName(i), SqlDr.GetFieldType(i));   
  79.                      //}   
  80.                      //while (SqlDr.Read())   
  81.                      //{   
  82.                      //    DataRow dr= dt.NewRow();   
  83.                      //    for (int i = 0; i < SqlDr.FieldCount; i++)   
  84.                      //    {   
  85.                      //        dr[i] = SqlDr[i];                               
  86.                      //    }   
  87.                      //    dt.Rows.Add(dr);                           
  88.                      //}       
  89.                      //---------------Method 2-------------------   
  90.                      //更为简单   
  91.                     dt.Load(SqlDr);   
  92.                      //关闭对象和连接   
  93.                     SqlDr.Close();   
  94.                     SqlDrConn.Close();   
  95.                      return  dt;   
  96.                 }   
  97.                  return   null ;   
  98.             }   
  99.              catch  (Exception ex)   
  100.             {   
  101.                 System.Windows.Forms.MessageBox.Show(ex.Message);             
  102.                  return   null ;   
  103.             }   
  104.              finally   
  105.             {           
  106.                 SqlDrConn.Close();   
  107.             }   
  108.         }   
  109.   
  110.          public  SqlDataAdapter GetDataAdapter( string  StrSql) //数据增删修查   
  111.         {   
  112.              if  (SqlDaConn.State == ConnectionState.Open)   
  113.             {   
  114.                 SqlDaConn.Close();   
  115.             }   
  116.              try   
  117.             {   
  118.                 SqlDaConn.Open();   
  119.                 SqlDataAdapter SqlDa =  new  SqlDataAdapter(StrSql, SqlDaConn);   
  120.                  //提供自动生成单表命令的一种方式   
  121.                 SqlCommandBuilder SqlCb =  new  SqlCommandBuilder(SqlDa);   
  122.                  return  SqlDa;   
  123.             }   
  124.              catch  (Exception ex)   
  125.             {   
  126.                 System.Windows.Forms.MessageBox.Show(ex.Message);   
  127.                  return   null ;   
  128.             }   
  129.              finally   
  130.             {                   
  131.                 SqlDaConn.Close();   
  132.             }   
  133.         }   
  134.   
  135.          //这里使用了ArrayList数组来存放SQL语句集   
  136.          public   bool  GetTransaction(System.Collections.ArrayList StrSqlList) //实现事务   
  137.         {   
  138.              if  (SqlTrConn.State == ConnectionState.Open)   
  139.             {   
  140.                 SqlTrConn.Close();   
  141.             }   
  142.             SqlTransaction SqlTr =  null ;   
  143.              try   
  144.             {   
  145.                 SqlTrConn.Open();   
  146.                 SqlTr = SqlTrConn.BeginTransaction();   
  147.                 SqlCommand SqlCmd =  new  SqlCommand();   
  148.                 SqlCmd.Connection = SqlTrConn;   
  149.                 SqlCmd.Transaction = SqlTr;               
  150.                  //加载数组里的SQL语句   
  151.                  for  ( int  i = 0; i < StrSqlList.Count; i++)   
  152.                 {   
  153.                     SqlCmd.CommandText = StrSqlList[i].ToString();   
  154.                     SqlCmd.ExecuteNonQuery();   
  155.                 }   
  156.                  //提交所有事务   
  157.                 SqlTr.Commit();                   
  158.                  return   true ;   
  159.             }   
  160.              catch  (Exception ex)   
  161.             {   
  162.                  //一但出错,回滚所有事务,还原状态   
  163.                  if (SqlTr!= null ) SqlTr.Rollback();                         
  164.                 System.Windows.Forms.MessageBox.Show(ex.Message);   
  165.                  return   false ;   
  166.             }                          
  167.              finally   
  168.             {                
  169.                 SqlTrConn.Close();   
  170.             }   
  171.         }   
  172.     }   
  173. }   
  174. //有什么问题可以联系我,下回将献"VS.net C# 连接池实现与应用"   
  175. //Q Q:105012823   
  176. //Email:yangweik-srx@126.com  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值