当前位置:Gxlcms > 数据库问题 > DbHelperSQL—— 动软生成DbHelperSQL类

DbHelperSQL—— 动软生成DbHelperSQL类

时间:2021-07-01 10:21:17 帮助过:2人阅读

using System; using System.Collections; using System.Collections.Specialized; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Data.Common; using System.Collections.Generic; namespace Register.DataAccess {     /// <summary>     /// 数据访问抽象基础类     /// Copyright (C) Maticsoft      /// </summary>     public abstract class DbHelperSQL     {         //数据库连接字符串(web.config来配置),多数据库可使用DbHelperSQLP来实现.         public static string connectionString = ConfigurationManager.ConnectionStrings["sqlservercon"].ConnectionString;           public DbHelperSQL()         {                     }         #region 公用方法         /// <summary>         /// 判断是否存在某表的某个字段         /// </summary>         /// <param name="tableName">表名称</param>         /// <param name="columnName">列名称</param>         /// <returns>是否存在</returns>         public static bool ColumnExists(string tableName, string columnName)         {             string sql = "select count(1) from syscolumns where [id]=object_id(‘" + tableName + "‘) and [name]=‘" + columnName + "";             object res = GetSingle(sql);             if (res == null)             {                 return false;             }             return Convert.ToInt32(res) > 0;         }         public static int GetMaxID(string FieldName, string TableName)         {             string strsql = "select max(" + FieldName + ")+1 from " + TableName;             object obj = GetSingle(strsql);             if (obj == null)             {                 return 1;             }             else             {                 return int.Parse(obj.ToString());             }         }         public static bool Exists(string strSql)         {             object obj = GetSingle(strSql);             int cmdresult;             if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))             {                 cmdresult = 0;             }             else             {                 cmdresult = int.Parse(obj.ToString()); //也可能=0             }             if (cmdresult == 0)             {                 return false;             }             else             {                 return true;             }         }         /// <summary>         /// 表是否存在         /// </summary>         /// <param name="TableName"></param>         /// <returns></returns>         public static bool TabExists(string TableName)         {             string strsql = "select count(*) from sysobjects where id = object_id(N‘[" + TableName + "]‘) and OBJECTPROPERTY(id, N‘IsUserTable‘) = 1";             //string strsql = "SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N‘[dbo].[" + TableName + "]‘) AND type in (N‘U‘)";             object obj = GetSingle(strsql);             int cmdresult;             if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))             {                 cmdresult = 0;             }             else             {                 cmdresult = int.Parse(obj.ToString());             }             if (cmdresult == 0)             {                 return false;             }             else             {                 return true;             }         }         public static bool Exists(string strSql, params SqlParameter[] cmdParms)         {             object obj = GetSingle(strSql, cmdParms);             int cmdresult;             if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))             {                 cmdresult = 0;             }             else             {                 cmdresult = int.Parse(obj.ToString());             }             if (cmdresult == 0)             {                 return false;             }             else             {                 return true;             }         }         #endregion         #region  执行简单SQL语句         /// <summary>         /// 执行SQL语句,返回影响的记录数         /// </summary>         /// <param name="SQLString">SQL语句</param>         /// <returns>影响的记录数</returns>         public static int ExecuteSql(string SQLString)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 using (SqlCommand cmd = new SqlCommand(SQLString, connection))                 {                     try                     {                         connection.Open();                         int rows = cmd.ExecuteNonQuery();                         return rows;                     }                     catch (System.Data.SqlClient.SqlException e)                     {                         connection.Close();                         throw e;                     }                 }             }         }         public static int ExecuteSqlByTime(string SQLString, int Times)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 using (SqlCommand cmd = new SqlCommand(SQLString, connection))                 {                     try                     {                         connection.Open();                         cmd.CommandTimeout = Times;                         int rows = cmd.ExecuteNonQuery();                         return rows;                     }                     catch (System.Data.SqlClient.SqlException e)                     {                         connection.Close();                         throw e;                     }                 }             }         }                         /// <summary>         /// 执行多条SQL语句,实现数据库事务。         /// </summary>         /// <param name="SQLStringList">多条SQL语句</param>         public static int ExecuteSqlTran(List<String> SQLStringList)         {             using (SqlConnection conn = new SqlConnection(connectionString))             {                 conn.Open();                 SqlCommand cmd = new SqlCommand();                 cmd.Connection = conn;                 SqlTransaction tx = conn.BeginTransaction();                 cmd.Transaction = tx;                 try                 {                     int count = 0;                     for (int n = 0; n < SQLStringList.Count; n++)                     {                         string strsql = SQLStringList[n];                         if (strsql.Trim().Length > 1)                         {                             cmd.CommandText = strsql;                             count += cmd.ExecuteNonQuery();                         }                     }                     tx.Commit();                     return count;                 }                 catch                 {                     tx.Rollback();                     return 0;                 }             }         }         /// <summary>         /// 执行带一个存储过程参数的的SQL语句。         /// </summary>         /// <param name="SQLString">SQL语句</param>         /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>         /// <returns>影响的记录数</returns>         public static int ExecuteSql(string SQLString, string content)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 SqlCommand cmd = new SqlCommand(SQLString, connection);                 System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);                 myParameter.Value = content;                 cmd.Parameters.Add(myParameter);                 try                 {                     connection.Open();                     int rows = cmd.ExecuteNonQuery();                     return rows;                 }                 catch (System.Data.SqlClient.SqlException e)                 {                     throw e;                 }                 finally                 {                     cmd.Dispose();                     connection.Close();                 }             }         }         /// <summary>         /// 执行带一个存储过程参数的的SQL语句。         /// </summary>         /// <param name="SQLString">SQL语句</param>         /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>         /// <returns>影响的记录数</returns>         public static object ExecuteSqlGet(string SQLString, string content)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 SqlCommand cmd = new SqlCommand(SQLString, connection);                 System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);                 myParameter.Value = content;                 cmd.Parameters.Add(myParameter);                 try                 {                     connection.Open();                     object obj = cmd.ExecuteScalar();                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))                     {                         return null;                     }                     else                     {                         return obj;                     }                 }                 catch (System.Data.SqlClient.SqlException e)                 {                     throw e;                 }                 finally                 {                     cmd.Dispose();                     connection.Close();                 }             }         }         /// <summary>         /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)         /// </summary>         /// <param name="strSQL">SQL语句</param>         /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>         /// <returns>影响的记录数</returns>         public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 SqlCommand cmd = new SqlCommand(strSQL, connection);                 System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);                 myParameter.Value = fs;                 cmd.Parameters.Add(myParameter);                 try                 {                     connection.Open();                     int rows = cmd.ExecuteNonQuery();                     return rows;                 }                 catch (System.Data.SqlClient.SqlException e)                 {                     throw e;                 }                 finally                 {                     cmd.Dispose();                     connection.Close();                 }             }         }         /// <summary>         /// 执行一条计算查询结果语句,返回查询结果(object)。         /// </summary>         /// <param name="SQLString">计算查询结果语句</param>         /// <returns>查询结果(object)</returns>         public static object GetSingle(string SQLString)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 using (SqlCommand cmd = new SqlCommand(SQLString, connection))                 {                     try                     {                         connection.Open();                         object obj = cmd.ExecuteScalar();                         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))                         {                             return null;                         }                         else                         {                             return obj;                         }                     }                     catch (System.Data.SqlClient.SqlException e)                     {                         connection.Close();                         throw e;                     }                 }             }         }         public static object GetSingle(string SQLString, int Times)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 using (SqlCommand cmd = new SqlCommand(SQLString, connection))                 {                     try                     {                         connection.Open();                         cmd.CommandTimeout = Times;                         object obj = cmd.ExecuteScalar();                         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))                         {                             return null;                         }                         else                         {                             return obj;                         }                     }                     catch (System.Data.SqlClient.SqlException e)                     {                         connection.Close();                         throw e;                     }                 }             }         }         /// <summary>         /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )         /// </summary>         /// <param name="strSQL">查询语句</param>         /// <returns>SqlDataReader</returns>         public static SqlDataReader ExecuteReader(string strSQL)         {             SqlConnection connection = new SqlConnection(connectionString);             SqlCommand cmd = new SqlCommand(strSQL, connection);             try             {                 connection.Open();                 SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);                 return myReader;             }             catch (System.Data.SqlClient.SqlException e)             {                 throw e;             }            }         /// <summary>         /// 执行查询语句,返回DataSet         /// </summary>         /// <param name="SQLString">查询语句</param>         /// <returns>DataSet</returns>         public static DataSet Query(string SQLString)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 DataSet ds = new DataSet();                 try                 {                     connection.Open();                     SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);                     command.Fill(ds, "ds");                 }                 catch (System.Data.SqlClient.SqlException ex)                 {                     throw new Exception(ex.Message);                 }                 return ds;             }         }         public static DataSet Query(string SQLString, int Times)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 DataSet ds = new DataSet();                 try                 {                     connection.Open();                     SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);                     command.SelectCommand.CommandTimeout = Times;                     command.Fill(ds, "ds");                 }                 catch (System.Data.SqlClient.SqlException ex)                 {                     throw new Exception(ex.Message);                 }                 return ds;             }         }         #endregion         #region 执行带参数的SQL语句         /// <summary>         /// 执行SQL语句,返回影响的记录数         /// </summary>         /// <param name="SQLString">SQL语句</param>         /// <returns>影响的记录数</returns>         public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)         {             using (SqlConnection connection = new SqlConnection(connectionString))             {                 using (SqlCommand cmd = new SqlCommand())                 {                     try                     {                         PrepareCommand(cmd, connection, null, SQLString, cmdParms);                         int rows = cmd.ExecuteNonQuery();                         cmd.Parameters.Clear();                         return rows;                     }                     catch (System.Data.SqlClient.SqlException e)                     {                         throw e;                     }                 }             }         }         /// <summary>         /// 执行多条SQL语句,实现数据库事务。         /// </summary>         /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>         public static void ExecuteSqlTran(Hashtable SQLStringList)         {             using (SqlConnection conn = new SqlConnection(connectionString))             {                 conn.Open();                 using (SqlTransaction trans = conn.BeginTransaction())                 {                     SqlCommand cmd = new SqlCommand();                     try                     {                         //循环                         foreach (DictionaryEntry myDE in SQLStringList)                         {                             string cmdText = myDE.Key.ToString();                             SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;                             PrepareCommand(cmd, conn, trans, cmdText, cmdParms);                             int val = cmd.ExecuteNonQuery();                             cmd.Parameters.Clear();                         }                         trans.Commit();                     }                     catch                     {                         trans.Rollback();                         throw;                     }                 }             }         }                          /// <summary>         /// 执行多条SQL语句,实现数据库事务。         /// </summary>         /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>         public static

人气教程排行