博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql server DbHelperSQL类
阅读量:6948 次
发布时间:2019-06-27

本文共 19101 字,大约阅读时间需要 63 分钟。

1 using JKTAC_LMIS.Entity;  2 using System;  3 using System.Collections;  4 using System.Collections.Generic;  5 using System.Configuration;  6 using System.Data;  7 using System.Data.SqlClient;  8 using System.Linq;  9 using System.Security.Cryptography; 10 using System.Text; 11 using System.Threading.Tasks; 12  13 namespace JKTAC_LMIS.DAL 14 { 15     public abstract class DbHelperSQL 16     { 17         public DbHelperSQL() 18         { 19  20         } 21         //定义连接字符串。 22         //protected static string ConnectionString = DecryptDBStr(ConfigurationManager.AppSettings["SQLConnectionString"], "zhangweilong"); 23         protected static string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 24         protected static SqlConnection Connection; 25         //定义数据库的打开和关闭方法 26         protected static void Open() 27         { 28             if (Connection == null) 29             { 30                 Connection = new SqlConnection(ConnectionString); 31             } 32             if (Connection.State.Equals(ConnectionState.Closed)) 33             { 34                 Connection.Open(); 35             } 36         } 37         protected static void Close() 38         { 39             if (Connection != null) 40             { 41                 Connection.Close(); 42             } 43         } 44         //判断用Sql查询的数据是否存在,true表示存在,False表示不存在 45         public static bool Exists(string strSql) 46         { 47             object obj = DbHelperSQL.GetSingle(strSql); 48             int cmdresult; 49             if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) 50             { 51                 cmdresult = 0; 52             } 53             else 54             { 55                 cmdresult = int.Parse(obj.ToString()); 56             } 57             if (cmdresult == 0) 58             { 59                 return false; 60             } 61             else 62             { 63                 return true; 64             } 65         } 66         public static bool Exists(string strSql, params SqlParameter[] cmdParms) 67         { 68             object obj = DbHelperSQL.GetSingle(strSql, cmdParms); 69             int cmdresult; 70             if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) 71             { 72                 cmdresult = 0; 73             } 74             else 75             { 76                 cmdresult = int.Parse(obj.ToString()); 77             } 78             if (cmdresult == 0) 79             { 80                 return false; 81             } 82             else 83             { 84                 return true; 85             } 86         } 87         //返回SqlDataReader数据集,使用完后记得关闭SqlDataReader 88         public static SqlDataReader GetDataReader(string SqlString) 89         { 90             try 91             { 92                 Open(); 93                 SqlCommand cmd = new SqlCommand(SqlString, Connection); 94                 return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 95             } 96             catch (System.Data.SqlClient.SqlException ex) 97             { 98                 throw new Exception(ex.Message); 99             }100         }101         // 公有方法,获取数据,返回一个DataSet。    102         public static DataSet GetDataSet(string SqlString)103         {104             using (SqlConnection connection = new SqlConnection(ConnectionString))105             {106                 connection.Open();107                 using (SqlCommand cmd = new SqlCommand(SqlString, connection))108                 {109                     using (SqlDataAdapter da = new SqlDataAdapter(cmd))110                     {111                         DataSet ds = new DataSet();112                         try113                         {114                             da.Fill(ds, "ds");115                             cmd.Parameters.Clear();116                         }117                         catch (System.Data.SqlClient.SqlException ex)118                         {119                             throw new Exception(ex.Message);120                         }121                         return ds;122                     }123                 }124             }125         }126         // 公有方法,获取数据,返回一个DataTable。    127         public static DataTable GetDataTable(string SqlString)128         {129             DataSet dataset = GetDataSet(SqlString);130             return dataset.Tables[0];131         }132         // 公有方法,获取数据,返回首行首列。    133         public static string GetSHSL(string SqlString)134         {135             DataSet dataset = GetDataSet(SqlString);136             if (dataset.Tables[0].Rows.Count > 0)137             {138                 return Convert.ToString(dataset.Tables[0].Rows[0][0].ToString());139             }140             else141             {142                 return "";143             }144         }145         // 公有方法,获取数据,返回首行首列的INT值。    146         public static string GetSHSLInt(string SqlString)147         {148             DataSet dataset = GetDataSet(SqlString);149             if (dataset.Tables[0].Rows.Count > 0)150             {151                 return Convert.ToString(dataset.Tables[0].Rows[0][0].ToString());152             }153             else154             {155                 return "0";156             }157         }158         // 公有方法,获取数据,返回一个DataRow。159         public static DataRow GetDataRow(string SqlString)160         {161             DataSet dataset = GetDataSet(SqlString);162             if (dataset.Tables[0].Rows.Count > 0)163             {164                 return dataset.Tables[0].Rows[0];165             }166             else167             {168                 return null;169             }170         }171         // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1172         public static int ExecuteSQL(String SqlString, Hashtable MyHashTb)173         {174             int count = -1;175             Open();176             try177             {178                 SqlCommand cmd = new SqlCommand(SqlString, Connection);179                 foreach (DictionaryEntry item in MyHashTb)180                 {181                     string[] CanShu = item.Key.ToString().Split('|');182                     if (CanShu[1].ToString().Trim() == "string")183                     {184                         cmd.Parameters.Add(CanShu[0], SqlDbType.VarChar);185                     }186                     else if (CanShu[1].ToString().Trim() == "int")187                     {188                         cmd.Parameters.Add(CanShu[0], SqlDbType.Int);189                     }190                     else if (CanShu[1].ToString().Trim() == "text")191                     {192                         cmd.Parameters.Add(CanShu[0], SqlDbType.Text);193                     }194                     else if (CanShu[1].ToString().Trim() == "datetime")195                     {196                         cmd.Parameters.Add(CanShu[0], SqlDbType.DateTime);197                     }198                     else199                     {200                         cmd.Parameters.Add(CanShu[0], SqlDbType.VarChar);201                     }202                     cmd.Parameters[CanShu[0]].Value = item.Value.ToString();203                 }204                 count = cmd.ExecuteNonQuery();205             }206             catch207             {208                 count = -1;209             }210             finally211             {212                 Close();213             }214             return count;215         }216         // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1217         public static int ExecuteSQL(String SqlString)218         {219             int count = -1;220             Open();221             try222             {223                 SqlCommand cmd = new SqlCommand(SqlString, Connection);224                 count = cmd.ExecuteNonQuery();225             }226             catch227             {228                 count = -1;229             }230             finally231             {232                 Close();233             }234             return count;235         }236         // 公有方法,执行一组Sql语句。返回是否成功,采用事务管理,发现异常时回滚数据237         public static bool ExecuteSQL(string[] SqlStrings)238         {239             bool success = true;240             Open();241             SqlCommand cmd = new SqlCommand();242             SqlTransaction trans = Connection.BeginTransaction();243             cmd.Connection = Connection;244             cmd.Transaction = trans;245             try246             {247                 foreach (string str in SqlStrings)248                 {249                     cmd.CommandText = str;250                     cmd.ExecuteNonQuery();251                 }252                 trans.Commit();253             }254             catch255             {256                 success = false;257                 trans.Rollback();258             }259             finally260             {261                 Close();262             }263             return success;264         }265         // Trans 266         public static bool ExecuteSqlByTrans(List
list)267 {268 bool success = true;269 Open();270 SqlCommand cmd = new SqlCommand();271 SqlTransaction trans = Connection.BeginTransaction();272 cmd.Connection = Connection;273 cmd.Transaction = trans;274 try275 {276 foreach (SqlAndPrams item in list)277 {278 if (item.cmdParms==null)279 {280 cmd.CommandText = item.sql;281 cmd.ExecuteNonQuery();282 }283 else284 {285 cmd.CommandText = item.sql;286 cmd.CommandType = CommandType.Text;//cmdType;287 cmd.Parameters.Clear();288 foreach (SqlParameter parameter in item.cmdParms)289 {290 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&291 (parameter.Value == null))292 {293 parameter.Value = DBNull.Value;294 }295 cmd.Parameters.Add(parameter);296 }297 cmd.ExecuteNonQuery();298 }299 300 }301 trans.Commit();302 }303 catch(Exception e)304 {305 success = false;306 trans.Rollback();307 }308 finally309 {310 Close();311 }312 return success;313 }314 // 执行一条计算查询结果语句,返回查询结果(object)。 315 public static object GetSingle(string SQLString)316 {317 using (SqlConnection connection = new SqlConnection(ConnectionString))318 {319 using (SqlCommand cmd = new SqlCommand(SQLString, connection))320 {321 try322 {323 connection.Open();324 object obj = cmd.ExecuteScalar();325 if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))326 {327 return null;328 }329 else330 {331 return obj;332 }333 }334 catch (System.Data.SqlClient.SqlException e)335 {336 connection.Close();337 throw e;338 }339 }340 }341 }342 public static object GetSingle(string SQLString, int Times)343 {344 using (SqlConnection connection = new SqlConnection(ConnectionString))345 {346 using (SqlCommand cmd = new SqlCommand(SQLString, connection))347 {348 try349 {350 connection.Open();351 cmd.CommandTimeout = Times;352 object obj = cmd.ExecuteScalar();353 if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))354 {355 return null;356 }357 else358 {359 return obj;360 }361 }362 catch (System.Data.SqlClient.SqlException e)363 {364 connection.Close();365 throw e;366 }367 }368 }369 }370 public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)371 {372 using (SqlConnection connection = new SqlConnection(ConnectionString))373 {374 using (SqlCommand cmd = new SqlCommand())375 {376 try377 {378 PrepareCommand(cmd, connection, null, SQLString, cmdParms);379 object obj = cmd.ExecuteScalar();380 cmd.Parameters.Clear();381 if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))382 {383 return null;384 }385 else386 {387 return obj;388 }389 }390 catch (System.Data.SqlClient.SqlException e)391 {392 throw e;393 }394 }395 }396 }397 // 执行SQL语句,返回影响的记录数398 public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)399 {400 using (SqlConnection connection = new SqlConnection(ConnectionString))401 {402 using (SqlCommand cmd = new SqlCommand())403 {404 try405 {406 PrepareCommand(cmd, connection, null, SQLString, cmdParms);407 int rows = cmd.ExecuteNonQuery();408 cmd.Parameters.Clear();409 return rows;410 }411 catch (System.Data.SqlClient.SqlException e)412 {413 throw e;414 }415 }416 }417 }418 //执行查询语句,返回DataSet419 public static DataSet Query(string SQLString, params SqlParameter[] cmdParms)420 {421 using (SqlConnection connection = new SqlConnection(ConnectionString))422 {423 SqlCommand cmd = new SqlCommand();424 PrepareCommand(cmd, connection, null, SQLString, cmdParms);425 using (SqlDataAdapter da = new SqlDataAdapter(cmd))426 {427 DataSet ds = new DataSet();428 try429 {430 da.Fill(ds, "ds");431 cmd.Parameters.Clear();432 }433 catch (System.Data.SqlClient.SqlException ex)434 {435 throw new Exception(ex.Message);436 }437 return ds;438 }439 }440 }441 private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)442 {443 if (conn.State == ConnectionState.Open)444 conn.Close();445 if (conn.State != ConnectionState.Open)446 conn.Open();447 cmd.Connection = conn;448 cmd.CommandText = cmdText;449 if (trans != null)450 cmd.Transaction = trans;451 cmd.CommandType = CommandType.Text;//cmdType;452 if (cmdParms != null)453 {454 455 456 foreach (SqlParameter parameter in cmdParms)457 {458 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&459 (parameter.Value == null))460 {461 parameter.Value = DBNull.Value;462 }463 cmd.Parameters.Add(parameter);464 }465 }466 }467 468 #region 执行存储过程 Add by LQB 2014-12-18469 public static object RunProcedure(string storedProcName, IDataParameter[] paramenters)470 {471 using (SqlConnection connection = new SqlConnection(ConnectionString))472 {473 connection.Open();474 SqlCommand command = BuildQueryCommand(connection, storedProcName, paramenters);475 object obj = command.ExecuteNonQuery();476 //object obj = command.Parameters["@Output_Value"].Value; //@Output_Value和具体的存储过程参数对应477 if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))478 {479 return null;480 }481 else482 {483 return obj;484 }485 }486 }487 488 private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)489 {490 SqlCommand command = new SqlCommand(storedProcName, connection);491 command.CommandType = CommandType.StoredProcedure;492 foreach (SqlParameter parameter in parameters)493 {494 if (parameter != null)495 {496 // 检查未分配值的输出参数,将其分配以DBNull.Value.497 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&498 (parameter.Value == null))499 {500 parameter.Value = DBNull.Value;501 }502 command.Parameters.Add(parameter);503 }504 }505 506 return command;507 }508 #endregion509 }510 }

 

转载于:https://www.cnblogs.com/xujunbao/p/8340459.html

你可能感兴趣的文章
Python基础11_函数名运用,闭包,迭代器
查看>>
java集合框架
查看>>
python之configparse模块
查看>>
用户数据文件损坏
查看>>
linux使用FIO测试磁盘的iops
查看>>
As3多线程
查看>>
CentOS6.2编译安装MySQL5.5.25
查看>>
Nyoj 星际之门(一)(Cayley定理)
查看>>
词法分析程序
查看>>
Mybatis 动态sql
查看>>
前端基础之css
查看>>
HTML标签权重分值排列
查看>>
sqlserver 2008手工修改表结构,表不能保存的问题与解决方法
查看>>
网址收藏
查看>>
Gtest:Using visual studio 2017 cross platform feature to compile code remotely
查看>>
Android Span的简单使用
查看>>
Aggressive cows 二分不仅仅是查找
查看>>
人的成长,注定是一场孤独的旅途 ...(360doc)
查看>>
iOS开发UI基础—手写控件,frame,center和bounds属性
查看>>
死锁排查的小窍门 --使用jdk自带管理工具jstack
查看>>