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; using System.Web.UI.WebControls; using System.Security.Cryptography; using System.Text; using System.Web.Configuration; namespace ZWL.DBUtility { /// /// 数据访问抽象基础类 /// Copyright (C) 2004-2008 By zwl /// public abstract class DbHelperSQL { public DbHelperSQL() { } //自己解密数据库设置字符串 protected static string DecryptDBStr(string Text, string sKey) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); int len; len = Text.Length / 2; byte[] inputByteArray = new byte[len]; int x, i; for (x = 0; x < len; x++) { i = Convert.ToInt32(Text.Substring(x * 2, 2), 16); inputByteArray[x] = (byte)i; } des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); System.IO.MemoryStream ms = new System.IO.MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return Encoding.Default.GetString(ms.ToArray()); } //定义连接字符串。 //protected static string ConnectionString = DecryptDBStr(ConfigurationManager.AppSettings["SQLConnectionString"], "zhangweilong"); protected static string ConnectionString = ConfigurationManager.AppSettings["SQLConnectionString"]; protected static string ConnString = WebConfigurationManager.AppSettings["TJDB"]; protected static string siteConnectionString = ConfigurationManager.AppSettings["SiteConnectionString"]; protected static SqlConnection Connection; //定义数据库的打开和关闭方法 protected static void Open() { if (Connection == null) { Connection = new SqlConnection(ConnectionString); } if (Connection.State.Equals(ConnectionState.Closed)) { Connection.Open(); } } //定义数据库的打开和关闭方法 protected static void TJDBOpen() { if (Connection == null) { Connection = new SqlConnection(ConnString); } if (Connection.State.Equals(ConnectionState.Closed)) { Connection.Open(); } } protected static void Close() { if (Connection != null) { Connection.Close(); } } //绑定到GridView public static void BindGridView(string SqlString, GridView MyGvData) { MyGvData.DataSource = GetDataSet(SqlString); MyGvData.DataBind(); } //绑定到DropDownList,设定Text和value显示 public static void BindDropDownList2(string SqlString, DropDownList MyDDL, string TextStr, string ValueStr) { DataSet MyDT =GetDataSet(SqlString); for(int i=0;i 0) { ReturnStr = ReturnStr + "|" + MyDT.Tables[0].Rows[i][0].ToString(); } else { ReturnStr = MyDT.Tables[0].Rows[i][0].ToString(); } } return ReturnStr; } //返回当前最大的列值 public static int GetMaxID(string FieldName, string TableName) { int MyReturn = 0; DataSet MyDT = GetDataSet("select max(" + FieldName + ") from " + TableName); if (MyDT.Tables[0].Rows.Count>0) { MyReturn = int.Parse(MyDT.Tables[0].Rows[0][0].ToString()); } return MyReturn; } //判断用Sql查询的数据是否存在,true表示存在,False表示不存在 public static bool Exists(string strSql) { object obj = DbHelperSQL.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 = DbHelperSQL.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; } } //返回SqlDataReader数据集,使用完后记得关闭SqlDataReader //public static SqlDataReader GetDataReader(string SqlString) //{ // try // { // Open(); // SqlCommand cmd = new SqlCommand(SqlString, Connection); // return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); // } // catch (System.Data.SqlClient.SqlException ex) // { // //throw new Exception(ex.Message); // return null; // } //} // 公有方法,获取数据,返回一个DataSet。 public static DataSet GetDataSet(string SqlString) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { connection.Open(); using (SqlCommand cmd = new SqlCommand(SqlString, connection)) { using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } connection.Close(); return ds; } } } } // 公有方法,获取数据,返回一个DataSet。 public static DataSet GetDataSetTJDB(string SqlString) { using (SqlConnection connection = new SqlConnection(ConnString)) { connection.Open(); using (SqlCommand cmd = new SqlCommand(SqlString, connection)) { using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } connection.Close(); return ds; } } } } // 公有方法,获取数据,返回一个DataSet。 public static DataSet GetDataSetSite(string SqlString) { using (SqlConnection connection = new SqlConnection(siteConnectionString)) { connection.Open(); using (SqlCommand cmd = new SqlCommand(SqlString, connection)) { using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } connection.Close(); return ds; } } } } // 公有方法,获取数据,返回一个DataTable。 public static DataTable GetDataTable(string SqlString) { DataSet dataset = GetDataSet(SqlString); return dataset.Tables[0]; } // 公有方法,获取数据,返回首行首列。 public static string GetSHSL(string SqlString) { DataSet dataset = GetDataSet(SqlString); if (dataset.Tables[0].Rows.Count > 0) { return Convert.ToString(dataset.Tables[0].Rows[0][0].ToString()); } else { return ""; } } // 公有方法,获取数据,返回首行首列的INT值。 public static string GetSHSLInt(string SqlString) { DataSet dataset = GetDataSet(SqlString); if (dataset.Tables[0].Rows.Count > 0) { return Convert.ToString(dataset.Tables[0].Rows[0][0].ToString()); } else { return "0"; } } // 公有方法,获取数据,返回一个DataRow。 public static DataRow GetDataRow(string SqlString) { DataSet dataset = GetDataSet(SqlString); if (dataset.Tables[0].Rows.Count > 0) { return dataset.Tables[0].Rows[0]; } else { return null; } } // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1 public static int ExecuteSQL(String SqlString, Hashtable MyHashTb) { int count = -1; SqlConnection connectiontemp = new SqlConnection(ConnectionString); connectiontemp.Open(); try { SqlCommand cmd = new SqlCommand(SqlString, connectiontemp); foreach (DictionaryEntry item in MyHashTb) { string[] CanShu = item.Key.ToString().Split('|'); if (CanShu[1].ToString().Trim() == "string") { cmd.Parameters.Add(CanShu[0], SqlDbType.VarChar); } else if (CanShu[1].ToString().Trim() == "int") { cmd.Parameters.Add(CanShu[0], SqlDbType.Int); } else if (CanShu[1].ToString().Trim() == "text") { cmd.Parameters.Add(CanShu[0], SqlDbType.Text); } else if (CanShu[1].ToString().Trim() == "datetime") { cmd.Parameters.Add(CanShu[0], SqlDbType.DateTime); } else { cmd.Parameters.Add(CanShu[0], SqlDbType.VarChar); } cmd.Parameters[CanShu[0]].Value = item.Value.ToString(); } count = cmd.ExecuteNonQuery(); } catch { count = -1; } finally { connectiontemp.Close(); } return count; } // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1 public static int ExecuteSQL(String SqlString) { int count = -1; SqlConnection connectionTemp = new SqlConnection(ConnectionString); connectionTemp.Open(); try { SqlCommand cmd = new SqlCommand(SqlString, connectionTemp); count = cmd.ExecuteNonQuery(); } catch { count = -1; } finally { connectionTemp.Close(); } return count; } // 公有方法,执行一组Sql语句。返回是否成功,采用事务管理,发现异常时回滚数据 public static bool ExecuteSQL(string[] SqlStrings) { bool success = true; SqlConnection connectionTemp = new SqlConnection(ConnectionString); connectionTemp.Open(); SqlCommand cmd = new SqlCommand(); SqlTransaction trans = Connection.BeginTransaction(); cmd.Connection = connectionTemp; cmd.Transaction = trans; try { foreach (string str in SqlStrings) { cmd.CommandText = str; cmd.ExecuteNonQuery(); } trans.Commit(); } catch { success = false; trans.Rollback(); } finally { connectionTemp.Close(); } return success; } // 执行一条计算查询结果语句,返回查询结果(object)。 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))) { connection.Close(); return null; } else { connection.Close(); return obj; } } catch (System.Data.SqlClient.SqlException e) { connection.Close(); return null; //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))) { connection.Close(); return null; } else { connection.Close(); return obj; } } catch (System.Data.SqlClient.SqlException e) { connection.Close(); //throw e; return null; } } } } public static object GetSingle(string SQLString, params SqlParameter[] cmdParms) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { using (SqlCommand cmd = new SqlCommand()) { try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); object obj = cmd.ExecuteScalar(); cmd.Parameters.Clear(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { connection.Close(); return null; } else { connection.Close(); return obj; } } catch (System.Data.SqlClient.SqlException e) { connection.Close(); //throw e; return null; } } } } // 执行SQL语句,返回影响的记录数 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(); connection.Close(); return rows; } catch (System.Data.SqlClient.SqlException e) { connection.Close(); //throw e; return 0; } } } } //执行查询语句,返回DataSet public static DataSet Query(string SQLString, params SqlParameter[] cmdParms) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, SQLString, cmdParms); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (System.Data.SqlClient.SqlException ex) { //throw new Exception(ex.Message); } connection.Close(); return ds; } } } private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = CommandType.Text;//cmdType; if (cmdParms != null) { foreach (SqlParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } } } } }