黑马程序员技术交流社区

标题: 自己写的dbhelper有意思可以参考 纯属性调用流 [打印本页]

作者: 于驭龙    时间: 2013-8-12 02:26
标题: 自己写的dbhelper有意思可以参考 纯属性调用流
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using System.Data.SqlClient;
  7. using System.Configuration;
  8. using System.Data.OleDb;
  9. namespace SqlExcelServices
  10. {
  11.     public   class DBHelper
  12.     {
  13.         /// <summary>
  14.         /// 连接字符串
  15.         /// </summary>
  16.         public string CmdConStr { get; set; }
  17.         /// <summary>
  18.         /// 存储过程名
  19.         /// </summary>
  20.         public string CmdProStr { get; set; }
  21.         /// <summary>
  22.         /// 传入参数new SqlParameter[] {new SqlParameter("@存储过程参数",参数)};
  23.         /// </summary>
  24.         public SqlParameter[] CmdPar { get; set; }
  25.         private  SqlConnection con = new SqlConnection();
  26.         private SqlCommand cmd = new SqlCommand() { CommandType = CommandType.StoredProcedure };
  27.         private SqlDataReader dr;
  28.         /// <summary>
  29.         /// 返回遍历需要的DR
  30.         /// </summary>
  31.         protected SqlDataReader Dr
  32.         {
  33.             get {
  34.                 if (dr==null)
  35.                 {
  36.                     this.GetdataReader();
  37.                 }
  38.                 return dr; }
  39.       
  40.         }
  41.         private bool isExecuteNonQuery;
  42.         /// <summary>
  43.         /// 返回增改删的BOOL值
  44.         /// </summary>
  45.         protected bool IsExecuteNonQuery
  46.         {
  47.             get
  48.             {
  49.                 this.GetExecuteNonQuery();
  50.                 return isExecuteNonQuery; }
  51.            
  52.         }
  53.         private bool isExecuteScalar;
  54.         /// <summary>
  55.         /// 返回登陆判断的BOOL或只需要一个判断时 SQL语句列名改成1 比如: select 1 from 表 where 列=列
  56.         /// </summary>
  57.         protected bool IsExecuteScalar
  58.         {
  59.             get
  60.             {
  61.                 this.GetExecuteScalar();
  62.                 return isExecuteScalar; }
  63.            
  64.         }
  65.         /// <summary>
  66.         /// 返回遍历需要的DR
  67.         /// </summary>
  68.         /// <param name="constring">连接字符串</param>
  69.         /// <param name="protrct">存储过程名</param>
  70.         /// <param name="par">参数数组写法 new SqlParameter[]{ new SqlParameter("@存储过程参数名",参数)}</param>
  71.         /// <returns></returns>
  72.         private void GetdataReader()
  73.         {

  74.             con.ConnectionString = ConfigurationManager.ConnectionStrings[CmdConStr].ToString();
  75.             if (con.State != ConnectionState.Open || con.State == ConnectionState.Broken)
  76.             {
  77.                 dr = null;
  78.                 con.Close();
  79.                 con.Open();
  80.             }
  81.             cmd.Connection = con;
  82.             cmd.CommandText = CmdProStr;
  83.             if (CmdPar != null)
  84.             {
  85.                 cmd.Parameters.AddRange(this.CmdPar);
  86.             }
  87.             dr = cmd.ExecuteReader();
  88.         }
  89.         /// <summary>
  90.         /// 返回增改删的BOOL值
  91.         /// </summary>
  92.         /// <param name="constring">连接字符串</param>
  93.         /// <param name="protrct">存储过程名</param>
  94.         /// <param name="par">参数数组写法 new SqlParameter[]{ new SqlParameter("@存储过程参数名",参数)}</param>
  95.         /// <returns></returns>
  96.         private void GetExecuteNonQuery()
  97.         {
  98.             con.ConnectionString = ConfigurationManager.ConnectionStrings[CmdConStr].ToString();
  99.             if (con.State != ConnectionState.Open || con.State == ConnectionState.Broken)
  100.             {

  101.                 con.Close();
  102.                 con.Open();

  103.             }
  104.             cmd.Connection = con;
  105.             cmd.CommandText = CmdProStr;
  106.             if (CmdPar != null)
  107.             {
  108.                 cmd.Parameters.AddRange(CmdPar);
  109.             }
  110.             int i = cmd.ExecuteNonQuery();
  111.             if (i > 0)
  112.             {
  113.                 isExecuteNonQuery= true;
  114.                 return;
  115.             }
  116.             isExecuteNonQuery=false;
  117.         }

  118.         /// <summary>
  119.         /// 返回登陆判断的BOOL或只需要一个判断时 SQL语句列名改成1 比如: select 1 from 表 where 列=列
  120.         /// </summary>
  121.         /// <param name="constring">连接字符串</param>
  122.         /// <param name="protrct">存储过程名</param>
  123.         /// <param name="par">参数数组写法 new SqlParameter[]{ new SqlParameter("@存储过程参数名",参数)}</param>

  124.         private void GetExecuteScalar()
  125.         {
  126.             con.ConnectionString = ConfigurationManager.ConnectionStrings[CmdConStr].ToString();
  127.             if (con.State != ConnectionState.Open || con.State == ConnectionState.Broken)
  128.             {

  129.                 con.Close();
  130.                 con.Open();

  131.             }
  132.             cmd.Connection = con;
  133.             cmd.CommandText = CmdProStr;
  134.             if (CmdPar != null)
  135.             {
  136.                 cmd.Parameters.AddRange(CmdPar);
  137.             }
  138.             int i = Convert.ToInt32(cmd.ExecuteScalar());
  139.             if (i > 0)
  140.             {
  141.                 isExecuteScalar= true;
  142.                 return;
  143.             }
  144.             isExecuteScalar= false;
  145.         }
  146.     }
  147. }
复制代码

作者: 熊丽    时间: 2013-8-12 22:53
不错哟,O(∩_∩)O~
作者: 于驭龙    时间: 2013-8-12 23:01
其实有改良版的....鸣 鸣 ..结果重装系统 为了用UEFI+GPI  忘备份 硬盘全格了..这个是以前写的
作者: 彭家贰小姐    时间: 2013-8-12 23:30
{:soso_e179:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2