Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6945653
  • 博文数量: 701
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 12021
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

中科院架构师,专注企业数字化各个方面,MES/ERP/CRM/OA、物联网、传感器、大数据、ML、AI、云计算openstack、Linux、SpringCloud。

文章分类

全部博文(701)

分类: 项目管理

2011-03-25 09:18:31

以下是数据库持久性操作共通类。
但问题:1:属于那个包
       2:怎么调用最好?


  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. using System.Data.SqlClient;  
  11.   
  12. using System.Windows.Forms;  
  13. using System.Collections.Generic;  
  14.   
  15. ///   
  16. /// Summary description for DataBaseHandle  
  17. ///   
  18. public class DataBaseHandle  
  19. {  
  20.     #region ====== Filed & Constructor ======  
  21.     //定义SqlConnection对象  
  22.     private SqlConnection con;  
  23.     ///   
  24.     /// 构造方法  
  25.     ///   
  26.     public DataBaseHandle()  
  27.     {  
  28.   
  29.     }  
  30.   
  31.     ///   
  32.     /// 检测DB连接成功与否  
  33.     ///   
  34.     ///   
  35.     private bool DBState()  
  36.     {  
  37.         bool nReturn = false;  
  38.         try  
  39.         {  
  40.             con = new SqlConnection("在此写上你的sql连接string");  
  41.             con.Open();  
  42.             nReturn = true;  
  43.         }  
  44.         catch  
  45.         {  
  46.             con.Close();  
  47.             nReturn = false;  
  48.         }  
  49.         return nReturn;  
  50.     }  
  51.  
  52.     #endregion ====== Filed & Constructor ======  
  53.   
  54.     #region ====== Insert ======  
  55.   
  56.     ///   
  57.     /// insert方法  
  58.     ///   
  59.     /// 传入一个Table  
  60.     /// 传入要插入的表名  
  61.     /// 0:成功  
  62.     /// -1:失败  
  63.     public int Insert(DataTable datInsert, string strTableName)  
  64.     {  
  65.         int nReturn = -1;  
  66.         if (!DBState() || datInsert == null || datInsert.Rows.Count == 0)  
  67.         { return nReturn; } //如果DB连接失败,或没传入要插入的表,则返回-1;  
  68.         //拼sql  
  69.         string strSql = GetInsertSql(datInsert, strTableName);  
  70.         if (string.IsNullOrEmpty(strSql))  
  71.         { return nReturn; }  
  72.   
  73.         try  
  74.         {  
  75.             //用sqlCommand执行sql  
  76.             SqlCommand sqlCom = new SqlCommand(strSql, con);  
  77.             sqlCom.ExecuteNonQuery();  
  78.             nReturn = 0;  
  79.         }  
  80.         catch (Exception)  
  81.         {  
  82.             return -1;  
  83.         }  
  84.   
  85.         return nReturn;  
  86.     }  
  87.   
  88.     ///   
  89.     /// 取insert 表拼sql  
  90.     ///   
  91.     /// 传入的表  
  92.     /// 表名  
  93.     /// 返回拼好的sql语句  
  94.     private string GetInsertSql(DataTable datInsert, string strTableName)  
  95.     {  
  96.         string strReturnSql = string.Empty;  
  97.         string strHead = " Insert into [" + strTableName + "]";  
  98.         string strCols = "";  
  99.         string strTempCol = string.Empty;  
  100.         if (datInsert == null || datInsert.Rows.Count == 0)  
  101.         {  
  102.             return strReturnSql;  
  103.         }  
  104.         for (int i = 0; i < datInsert.Columns.Count; i++)  
  105.         {  
  106.             strTempCol += "," + datInsert.Columns[i].ColumnName.ToString();  
  107.         }  
  108.         strTempCol = strTempCol.Substring(1);  
  109.         strCols = " (" + strTempCol + ") " + " values ";  
  110.         //int nRowCount = datInsert.Rows.Count;  
  111.         List<string> strArrValues = new List<string>();  
  112.   
  113.         //string[] strArrValues = new string[2] {string.Empty,string.Empty};  
  114.   
  115.         int nReturn = GetInserValue(datInsert, strArrValues);  
  116.         if (nReturn == -1) return string.Empty;  
  117.   
  118.         for (int j = 0; j < strArrValues.Count; j++)  
  119.         {  
  120.             strReturnSql += strHead + strCols + " (" + strArrValues[j] + ") ";  
  121.         }  
  122.         return strReturnSql;  
  123.     }  
  124.     ///   
  125.     /// 拼insertsql  
  126.     ///   
  127.     ///   
  128.     ///   
  129.     /// 0:成功  
  130.     /// -1:失败  
  131.     private int GetInserValue(DataTable datInsert, List<string> strArrValues)  
  132.     {  
  133.         if (datInsert == null || datInsert.Rows.Count == 0)  
  134.         {  
  135.             return -1;  
  136.         }  
  137.         string strRowValue = string.Empty;  
  138.         for (int i = 0; i < datInsert.Rows.Count; i++)  
  139.         {  
  140.             strRowValue = string.Empty;  
  141.             for (int j = 0; j < datInsert.Columns.Count; j++)  
  142.             {  
  143.                 strRowValue += "," + "'" + datInsert.Rows[i][j].ToString() + "'";  
  144.             }  
  145.             strArrValues.Add(strRowValue.Substring(1));  
  146.         }  
  147.         return 0;  
  148.     }  
  149.     #endregion ====== Insert ======  
  150.  
  151.     #region ====== Delete ======  
  152.     ///   
  153.     /// 删除记录  
  154.     ///   
  155.     /// 传入sqlPara以防sql注入  
  156.     /// 传入sql语句  
  157.     /// 布尔值决定是否使用sqlPara  
  158.     /// 0:成功  
  159.     /// -1:失败  
  160.     public int Delete(SqlParameter[] sqlPara, string strAlreadySql, bool bUseCustomSql)  
  161.     {  
  162.         int nReturn = -1;  
  163.         if (!DBState()) //如果DB连接失败,则返回-1;  
  164.         { return nReturn; }  
  165.         if (bUseCustomSql)  
  166.         {  
  167.             SqlCommand sqlCom = new SqlCommand(strAlreadySql, con);  
  168.             sqlCom.ExecuteNonQuery();  
  169.         }  
  170.         else  
  171.         {  
  172.             SqlCommand sqlCommand = new SqlCommand(strAlreadySql, con);  
  173.             //把防sql注入的sql变量加入sqlCommand对象  
  174.             for (int i = 0; i < sqlPara.Length; i++)  
  175.             {  
  176.                 sqlCommand.Parameters.Add(sqlPara[i]);  
  177.             }  
  178.             sqlCommand.ExecuteNonQuery();  
  179.         }  
  180.         return nReturn;  
  181.     }  
  182.  
  183.     #endregion ====== Delete ======  
  184.   
  185.     #region ====== Update ======  
  186.   
  187.     ///   
  188.     /// 更新记录  
  189.     ///   
  190.     /// 传入由要更新的字段及值组成的表  
  191.     /// 传入表名  
  192.     /// 更新条件  
  193.     /// 0:成功  
  194.     /// -1:失败     
  195.     public int Update(DataTable datUpdate, string strTableName, string[] strCondition)  
  196.     {  
  197.         int nReturn = -1;  
  198.         if (!DBState()) //如果DB连接失败,则返回-1;  
  199.         { return nReturn; }  
  200.         try  
  201.         {  
  202.             //拼update sql  
  203.             string strUpdateSql = GetUpdateSql(datUpdate, strTableName, strCondition);  
  204.             if (string.IsNullOrEmpty(strUpdateSql)) { return -1; }  
  205.             SqlCommand com = new SqlCommand(strUpdateSql, con);  
  206.             com.ExecuteNonQuery();  
  207.             nReturn = 0;  
  208.         }  
  209.         catch (Exception)  
  210.         {  
  211.             nReturn = -1;   
  212.         }  
  213.         return nReturn;  
  214.     }  
  215.   
  216.     ///   
  217.     /// 拼update sql  
  218.     ///   
  219.     /// 传入要更新的表  
  220.     /// 表名  
  221.     /// 更新条件,[]对应要更新表的每一行的条件  
  222.     /// 返回拼完成的sql  
  223.     private string GetUpdateSql(DataTable datUpdate, string strTableName, string[] strCondition)  
  224.     {  
  225.         string strReturn = string.Empty;  
  226.         string strStart = " Update " + strTableName;  
  227.         List<string> strSetValues = new List<string>();  
  228.         int nReturn = GetSetSql(datUpdate, strSetValues);  
  229.         if (nReturn == -1)  
  230.         { return string.Empty; }  
  231.         for (int i = 0; i < strSetValues.Count; i++)  
  232.         {  
  233.             strReturn += strStart + strSetValues[i] + strCondition[i];   
  234.         }  
  235.         return strReturn;  
  236.     }  
  237.   
  238.     ///   
  239.     /// 拼update sql  
  240.     ///   
  241.     ///   
  242.     ///   
  243.     /// 0:成功  
  244.     /// -1:失败    
  245.     private int GetSetSql(DataTable datUpdate, List<string> strSetValues)  
  246.     {  
  247.         int nReturn = -1;  
  248.         if (datUpdate == null || datUpdate.Rows.Count == 0)  
  249.         {  
  250.             return -1;  
  251.         }  
  252.         try  
  253.         {  
  254.             for (int i = 0; i < datUpdate.Rows.Count; i++)  
  255.             {  
  256.                 string str = string.Empty;  
  257.                 for (int j = 0; j < datUpdate.Columns.Count; j++)  
  258.                 {  
  259.                     str += " , " + datUpdate.Columns[j].ColumnName + "=" + "'" + datUpdate.Rows[i][j].ToString() + "'" ;  
  260.                 }  
  261.                 string strSql = " Set " + "  " + str.Substring(2) + "  ";  
  262.                 strSetValues.Add(strSql);  
  263.             }  
  264.             nReturn = 0;  
  265.         }  
  266.         catch(Exception)  
  267.         {  
  268.             nReturn = -1;   
  269.         }  
  270.         return nReturn;  
  271.     }  
  272.     #endregion ====== Update ======  
  273.  
  274.     #region ====== Search ======  
  275.   
  276.     ///   
  277.     /// 查找记录  
  278.     ///   
  279.     /// 查打到数据用此表回传  
  280.     /// 用sql变量防sql注入  
  281.     /// 可以传自己写的sql  
  282.     /// 布尔值定义是否要用自己写的sql  
  283.     /// 0:成功  
  284.     /// -1:失败   
  285.     public int Search(out DataTable datReturn, SqlParameter[] sqlPara, string strAlreadySql, bool bUseCustomSql)  
  286.     {  
  287.         datReturn = new DataTable();  
  288.         int nReturn = -1;  
  289.         if (!DBState()) //如果DB连接失败,则返回-1;  
  290.         { return nReturn; }  
  291.         try  
  292.         {  
  293.             if (bUseCustomSql)//如果用自己写的sql  
  294.             {  
  295.                 SqlCommand sqlCom = new SqlCommand(strAlreadySql, con);  
  296.                 SqlDataAdapter dap = new SqlDataAdapter(sqlCom);  
  297.                 dap.Fill(datReturn);  
  298.                 nReturn = 0;  
  299.             }  
  300.             else  //不用自己写的sql  
  301.             {  
  302.                 SqlCommand sqlCommand = new SqlCommand(strAlreadySql, con);  
  303.                 for (int i = 0; i < sqlPara.Length; i++)  
  304.                 {  
  305.                     if (sqlPara[i] != null)  
  306.                     {  
  307.                         sqlCommand.Parameters.Add(sqlPara[i]);  
  308.                     }  
  309.                 }  
  310.                 //取得数据放在表中.  
  311.                 SqlDataAdapter sqlDap = new SqlDataAdapter(sqlCommand);  
  312.                 sqlDap.Fill(datReturn);  
  313.                 nReturn = 0;  
  314.             }  
  315.         }  
  316.         catch(Exception)  
  317.         {  
  318.             nReturn = -1;   
  319.         }  
  320.         return nReturn;  
  321.     }  
  322.  
  323.     #endregion ====== Search ======  


阅读(3321) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~