using System; using System.Collections; using System.Collections.Specialized; using System.Data; using System.Data.SQLite; using System.Configuration; namespace Bro.Process.DataBase { public class SQLiteHelper { //Êý¾Ý¿âÁ¬½Ó×Ö·û´® public static string connectionString = ConfigurationManager.ConnectionStrings["DBModel"].ConnectionString; public SQLiteHelper() { } #region ¹«Ó÷½·¨ 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()); } if (cmdresult == 0) { return false; } else { return true; } } public static bool Exists(string strSql, params SQLiteParameter[] 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Óï¾ä /// /// Ö´ÐÐSQLÓï¾ä£¬·µ»ØÓ°ÏìµÄ¼Ç¼Êý /// /// SQLÓï¾ä /// Ó°ÏìµÄ¼Ç¼Êý public static int ExecuteSql(string SQLString) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection)) { try { connection.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.SQLite.SQLiteException E) { connection.Close(); throw new Exception(E.Message); } } } } /// /// Ö´ÐÐSQLÓï¾ä£¬ÉèÖÃÃüÁîµÄÖ´Ðеȴýʱ¼ä /// /// /// /// public static int ExecuteSqlByTime(string SQLString, int Times) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection)) { try { connection.Open(); cmd.CommandTimeout = Times; int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.SQLite.SQLiteException E) { connection.Close(); throw new Exception(E.Message); } } } } /// /// Ö´ÐжàÌõSQLÓï¾ä£¬ÊµÏÖÊý¾Ý¿âÊÂÎñ¡£ /// /// ¶àÌõSQLÓï¾ä public static bool ExecuteSqlTran(ArrayList SQLStringList) { bool isSuccess = false; using (SQLiteConnection conn = new SQLiteConnection(connectionString)) { conn.Open(); SQLiteCommand cmd = new SQLiteCommand(); cmd.Connection = conn; cmd.CommandText = "PRAGMA synchronous = OFF;"; cmd.ExecuteNonQuery(); SQLiteTransaction tx = conn.BeginTransaction(); cmd.Transaction = tx; try { for (int n = 0; n < SQLStringList.Count; n++) { string strsql = SQLStringList[n].ToString(); if (strsql.Trim().Length > 1) { cmd.CommandText = strsql; cmd.ExecuteNonQuery(); } } tx.Commit(); isSuccess = true; } catch (System.Data.SQLite.SQLiteException E) { tx.Rollback(); isSuccess = false; throw new Exception(E.Message); } } return isSuccess; } /// /// Ö´ÐдøÒ»¸ö´æ´¢¹ý³Ì²ÎÊýµÄµÄSQLÓï¾ä¡£ /// /// SQLÓï¾ä /// ²ÎÊýÄÚÈÝ,±ÈÈçÒ»¸ö×Ö¶ÎÊǸñʽ¸´ÔÓµÄÎÄÕ£¬ÓÐÌØÊâ·ûºÅ£¬¿ÉÒÔͨ¹ýÕâ¸ö·½Ê½Ìí¼Ó /// Ó°ÏìµÄ¼Ç¼Êý public static int ExecuteSql(string SQLString, string content) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { SQLiteCommand cmd = new SQLiteCommand(SQLString, connection); SQLiteParameter myParameter = new SQLiteParameter("@content", DbType.String); myParameter.Value = content; cmd.Parameters.Add(myParameter); try { connection.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.SQLite.SQLiteException E) { throw new Exception(E.Message); } finally { cmd.Dispose(); connection.Close(); } } } /// /// Ö´ÐдøÒ»¸ö´æ´¢¹ý³Ì²ÎÊýµÄµÄSQLÓï¾ä¡£ /// /// SQLÓï¾ä /// ²ÎÊýÄÚÈÝ,±ÈÈçÒ»¸ö×Ö¶ÎÊǸñʽ¸´ÔÓµÄÎÄÕ£¬ÓÐÌØÊâ·ûºÅ£¬¿ÉÒÔͨ¹ýÕâ¸ö·½Ê½Ìí¼Ó /// Ó°ÏìµÄ¼Ç¼Êý public static object ExecuteSqlGet(string SQLString, string content) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { SQLiteCommand cmd = new SQLiteCommand(SQLString, connection); SQLiteParameter myParameter = new SQLiteParameter("@content", DbType.String); 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.SQLite.SQLiteException E) { throw new Exception(E.Message); } finally { cmd.Dispose(); connection.Close(); } } } /// /// ÏòÊý¾Ý¿âÀï²åÈëͼÏñ¸ñʽµÄ×Ö¶Î(ºÍÉÏÃæÇé¿öÀàËÆµÄÁíÒ»ÖÖʵÀý) /// /// SQLÓï¾ä /// ͼÏñ×Ö½Ú,Êý¾Ý¿âµÄ×Ö¶ÎÀàÐÍΪimageµÄÇé¿ö /// Ó°ÏìµÄ¼Ç¼Êý public static int ExecuteSqlInsertImg(string strSQL, byte[] fs) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { SQLiteCommand cmd = new SQLiteCommand(strSQL, connection); SQLiteParameter myParameter = new SQLiteParameter("@fs", DbType.Binary); myParameter.Value = fs; cmd.Parameters.Add(myParameter); try { connection.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.SQLite.SQLiteException E) { throw new Exception(E.Message); } finally { cmd.Dispose(); connection.Close(); } } } /// /// Ö´ÐÐÒ»Ìõ¼ÆËã²éѯ½á¹ûÓï¾ä£¬·µ»Ø²éѯ½á¹û£¨object£©¡£ /// /// ¼ÆËã²éѯ½á¹ûÓï¾ä /// ²éѯ½á¹û£¨object£© public static object GetSingle(string SQLString) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand cmd = new SQLiteCommand(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.SQLite.SQLiteException e) { connection.Close(); throw new Exception(e.Message); } } } } /// /// Ö´ÐвéѯÓï¾ä£¬·µ»ØSQLiteDataReader(ʹÓø÷½·¨ÇмÇÒªÊÖ¹¤¹Ø±ÕSQLiteDataReaderºÍÁ¬½Ó) /// /// ²éѯÓï¾ä /// SQLiteDataReader public static SQLiteDataReader ExecuteReader(string strSQL) { SQLiteConnection connection = new SQLiteConnection(connectionString); SQLiteCommand cmd = new SQLiteCommand(strSQL, connection); try { connection.Open(); SQLiteDataReader myReader = cmd.ExecuteReader(); return myReader; } catch (System.Data.SQLite.SQLiteException e) { throw new Exception(e.Message); } //finally //²»ÄÜÔڴ˹رգ¬·ñÔò£¬·µ»ØµÄ¶ÔÏó½«ÎÞ·¨Ê¹Óà //{ // cmd.Dispose(); // connection.Close(); //} } /// /// Ö´ÐвéѯÓï¾ä£¬·µ»ØDataSet /// /// ²éѯÓï¾ä /// DataSet public static DataSet Query(string SQLString) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection); command.Fill(ds, "ds"); } catch (System.Data.SQLite.SQLiteException ex) { throw new Exception(ex.Message); } return ds; } } public static DataSet Query(string SQLString, string TableName) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection); command.Fill(ds, TableName); } catch (System.Data.SQLite.SQLiteException ex) { throw new Exception(ex.Message); } return ds; } } /// /// Ö´ÐвéѯÓï¾ä£¬·µ»ØDataSet,ÉèÖÃÃüÁîµÄÖ´Ðеȴýʱ¼ä /// /// /// /// public static DataSet Query(string SQLString, int Times) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection); command.SelectCommand.CommandTimeout = Times; command.Fill(ds, "ds"); } catch (System.Data.SQLite.SQLiteException ex) { throw new Exception(ex.Message); } return ds; } } #endregion #region Ö´Ðдø²ÎÊýµÄSQLÓï¾ä /// /// Ö´ÐÐSQLÓï¾ä£¬·µ»ØÓ°ÏìµÄ¼Ç¼Êý /// /// SQLÓï¾ä /// Ó°ÏìµÄ¼Ç¼Êý public static int ExecuteSql(string SQLString, params SQLiteParameter[] cmdParms) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand cmd = new SQLiteCommand()) { try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); int rows = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return rows; } catch (System.Data.SQLite.SQLiteException E) { throw new Exception(E.Message); } } } } /// /// Ö´ÐжàÌõSQLÓï¾ä£¬ÊµÏÖÊý¾Ý¿âÊÂÎñ¡£ /// /// SQLÓï¾äµÄ¹þÏ£±í£¨keyΪsqlÓï¾ä£¬valueÊǸÃÓï¾äµÄSQLiteParameter[]£© public static void ExecuteSqlTran(Hashtable SQLStringList) { using (SQLiteConnection conn = new SQLiteConnection(connectionString)) { conn.Open(); using (SQLiteTransaction trans = conn.BeginTransaction()) { SQLiteCommand cmd = new SQLiteCommand(); try { //Ñ­»· foreach (DictionaryEntry myDE in SQLStringList) { string cmdText = myDE.Key.ToString(); SQLiteParameter[] cmdParms = (SQLiteParameter[])myDE.Value; PrepareCommand(cmd, conn, trans, cmdText, cmdParms); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } trans.Commit(); } catch (System.Data.SQLite.SQLiteException e) { trans.Rollback(); throw new Exception(e.Message); } } } } /// /// Ö´ÐÐÒ»Ìõ¼ÆËã²éѯ½á¹ûÓï¾ä£¬·µ»Ø²éѯ½á¹û£¨object£©¡£ /// /// ¼ÆËã²éѯ½á¹ûÓï¾ä /// ²éѯ½á¹û£¨object£© public static object GetSingle(string SQLString, params SQLiteParameter[] cmdParms) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand cmd = new SQLiteCommand()) { 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))) { return null; } else { return obj; } } catch (System.Data.SQLite.SQLiteException e) { throw new Exception(e.Message); } } } } /// /// Ö´ÐвéѯÓï¾ä£¬·µ»ØSQLiteDataReader (ʹÓø÷½·¨ÇмÇÒªÊÖ¹¤¹Ø±ÕSQLiteDataReaderºÍÁ¬½Ó) /// /// ²éѯÓï¾ä /// SQLiteDataReader public static SQLiteDataReader ExecuteReader(string SQLString, params SQLiteParameter[] cmdParms) { SQLiteConnection connection = new SQLiteConnection(connectionString); SQLiteCommand cmd = new SQLiteCommand(); try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); SQLiteDataReader myReader = cmd.ExecuteReader(); cmd.Parameters.Clear(); return myReader; } catch (System.Data.SQLite.SQLiteException e) { throw new Exception(e.Message); } //finally //²»ÄÜÔڴ˹رգ¬·ñÔò£¬·µ»ØµÄ¶ÔÏó½«ÎÞ·¨Ê¹Óà //{ // cmd.Dispose(); // connection.Close(); //} } /// /// Ö´ÐвéѯÓï¾ä£¬·µ»ØDataSet /// /// ²éѯÓï¾ä /// DataSet public static DataSet Query(string SQLString, params SQLiteParameter[] cmdParms) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { SQLiteCommand cmd = new SQLiteCommand(); PrepareCommand(cmd, connection, null, SQLString, cmdParms); using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd)) { DataSet ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (System.Data.SQLite.SQLiteException ex) { throw new Exception(ex.Message); } return ds; } } } public static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, SQLiteTransaction trans, string cmdText, SQLiteParameter[] 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 (SQLiteParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } } } #endregion #region ²ÎÊýת»» /// /// ·Å»ØÒ»¸öSQLiteParameter /// /// ²ÎÊýÃû×Ö /// ²ÎÊýÀàÐÍ /// ²ÎÊý´óС /// ²ÎÊýÖµ /// SQLiteParameterµÄÖµ public static SQLiteParameter MakeSQLiteParameter(string name, DbType type, int size, object value) { SQLiteParameter parm = new SQLiteParameter(name, type, size); parm.Value = value; return parm; } public static SQLiteParameter MakeSQLiteParameter(string name, DbType type, object value) { SQLiteParameter parm = new SQLiteParameter(name, type); parm.Value = value; return parm; } #endregion } }