zoukankan      html  css  js  c++  java
  • SQL Helper

    	public class SQLiteDBHelper
    	{
    		public static readonly string CONNECT_STRING_NODE;
    		private static string dbPath;
    		private static SQLiteConnection connection;
    		public static string DBPath
    		{
    			get
    			{
    				return SQLiteDBHelper.dbPath;
    			}
    			set
    			{
    				SQLiteDBHelper.dbPath = value;
    				SQLiteDBHelper.ConnString = "Data Source=" + SQLiteDBHelper.dbPath;
    			}
    		}
    		public static string ConnString
    		{
    			get;
    			set;
    		}
    		public static SQLiteTransaction Transaction
    		{
    			get;
    			private set;
    		}
    		public static SQLiteConnection Connection
    		{
    			get
    			{
    				if (SQLiteDBHelper.connection == null)
    				{
    					SQLiteDBHelper.connection = new SQLiteConnection(SQLiteDBHelper.ConnString);
    				}
    				if (SQLiteDBHelper.connection.State == ConnectionState.Closed)
    				{
    					SQLiteDBHelper.connection.Open();
    				}
    				else
    				{
    					if (SQLiteDBHelper.connection.State == ConnectionState.Broken)
    					{
    						SQLiteDBHelper.connection.Close();
    						SQLiteDBHelper.connection.Open();
    					}
    				}
    				return SQLiteDBHelper.connection;
    			}
    		}
    		static SQLiteDBHelper()
    		{
    			SQLiteDBHelper.CONNECT_STRING_NODE = "DBPath";
    			try
    			{
    				XmlDocument xmlDocument = new XmlDocument();
    				xmlDocument.Load(Path.GetFullPath("settings.xml"));
    				XmlNode xmlNode = xmlDocument.SelectSingleNode(SQLiteDBHelper.CONNECT_STRING_NODE);
    				SQLiteDBHelper.DBPath = Path.GetFullPath(xmlNode.InnerText);
    			}
    			catch (Exception ex)
    			{
    				Console.WriteLine("Failed: Read settings.xml " + ex.Message);
    			}
    		}
    		public static void CloseConnection()
    		{
    			if (SQLiteDBHelper.connection != null && (SQLiteDBHelper.connection.State == ConnectionState.Open || SQLiteDBHelper.connection.State == ConnectionState.Broken))
    			{
    				SQLiteDBHelper.connection.Close();
    			}
    		}
    		public static object ExecuteScalar(CommandType commandType, string commandText, SQLiteParameter[] pars)
    		{
    			object result;
    			try
    			{
    				SQLiteCommand sQLiteCommand = new SQLiteCommand();
    				SQLiteDBHelper.PreCommand(sQLiteCommand, commandType, commandText, pars);
    				result = sQLiteCommand.ExecuteScalar();
    			}
    			finally
    			{
    				if (SQLiteDBHelper.Connection != null && SQLiteDBHelper.Transaction == null)
    				{
    					SQLiteDBHelper.Connection.Close();
    				}
    			}
    			return result;
    		}
    		public static SQLiteDataReader ExecuteQuery(CommandType commandType, string commandText, SQLiteParameter[] pars)
    		{
    			SQLiteDataReader result;
    			using (SQLiteCommand sQLiteCommand = new SQLiteCommand())
    			{
    				SQLiteDBHelper.PreCommand(sQLiteCommand, commandType, commandText, pars);
    				result = sQLiteCommand.ExecuteReader(CommandBehavior.CloseConnection);
    			}
    			return result;
    		}
    		public static int ExecuteNonQuery(CommandType commandType, string commandText, SQLiteParameter[] pars)
    		{
    			int result;
    			using (SQLiteCommand sQLiteCommand = new SQLiteCommand())
    			{
    				SQLiteDBHelper.PreCommand(sQLiteCommand, commandType, commandText, pars);
    				int num = sQLiteCommand.ExecuteNonQuery();
    				if (SQLiteDBHelper.Transaction == null)
    				{
    					SQLiteDBHelper.CloseConnection();
    				}
    				result = num;
    			}
    			return result;
    		}
    		public static void BeginTransaction()
    		{
    			SQLiteDBHelper.Transaction = SQLiteDBHelper.Connection.BeginTransaction();
    		}
    		public static void EndTransaction()
    		{
    			if (SQLiteDBHelper.Transaction != null)
    			{
    				SQLiteDBHelper.Transaction.Dispose();
    				SQLiteDBHelper.Transaction = null;
    				SQLiteDBHelper.CloseConnection();
    			}
    		}
    		public static void Commit()
    		{
    			if (SQLiteDBHelper.Transaction != null)
    			{
    				SQLiteDBHelper.Transaction.Commit();
    				SQLiteDBHelper.Transaction = null;
    				SQLiteDBHelper.CloseConnection();
    			}
    		}
    		public static void Rollback()
    		{
    			if (SQLiteDBHelper.Transaction != null)
    			{
    				SQLiteDBHelper.Transaction.Rollback();
    				SQLiteDBHelper.Transaction = null;
    				SQLiteDBHelper.CloseConnection();
    			}
    		}
    		protected static void PreCommand(SQLiteCommand com, CommandType commandType, string commandText, SQLiteParameter[] pars)
    		{
    			com.CommandText = commandText;
    			com.Connection = SQLiteDBHelper.Connection;
    			com.Parameters.AddRange(pars ?? new SQLiteParameter[0]);
    			com.CommandType = commandType;
    		}
    		public static string[] GetFieldNames(DbDataReader reader)
    		{
    			int fieldCount = reader.FieldCount;
    			string[] array = new string[fieldCount];
    			for (int i = 0; i < fieldCount; i++)
    			{
    				array[i] = reader.GetName(i);
    			}
    			return array;
    		}
    		public static object GetValue(DbDataReader reader, string field, object defValue = null)
    		{
    			string[] fieldNames = SQLiteDBHelper.GetFieldNames(reader);
    			string[] array = fieldNames;
    			object result;
    			for (int i = 0; i < array.Length; i++)
    			{
    				string text = array[i];
    				if (string.Equals(text, field, StringComparison.CurrentCultureIgnoreCase))
    				{
    					result = reader[text];
    					return result;
    				}
    			}
    			result = defValue;
    			return result;
    		}
    	}
    
    public class AppService : IApp, IDALBase<App>, IModelConvert<App>
    	{
    		public App Load(int id)
    		{
    			SQLiteParameter[] pars = new SQLiteParameter[]
    			{
    				new SQLiteParameter("@Id", id)
    			};
    			App result;
    			using (SQLiteDataReader sQLiteDataReader = SQLiteDBHelper.ExecuteQuery(CommandType.Text, "select * from tb_app where Id=@Id", pars))
    			{
    				if (sQLiteDataReader.Read())
    				{
    					result = this.ConvertModel(sQLiteDataReader);
    					return result;
    				}
    			}
    			result = null;
    			return result;
    		}
    		public IList<App> GetAll()
    		{
    			IList<App> result;
    			using (SQLiteDataReader sQLiteDataReader = SQLiteDBHelper.ExecuteQuery(CommandType.Text, "select * from tb_app", null))
    			{
    				result = this.ConvertModelList(sQLiteDataReader);
    			}
    			return result;
    		}
    		public bool Add(App info)
    		{
    			SQLiteParameter[] pars = new SQLiteParameter[]
    			{
    				new SQLiteParameter("@Name", info.Name),
    				new SQLiteParameter("@Description", info.Description),
    				new SQLiteParameter("@DataPath", info.DataPath),
    				new SQLiteParameter("@Parameters", info.Parameters),
    				new SQLiteParameter("@InsertTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
    				new SQLiteParameter("@UpdateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
    			};
    			return SQLiteDBHelper.ExecuteNonQuery(CommandType.Text, "insert into tb_app (Name, Description, DataPath, Parameters, InsertTime, UpdateTime)values (@Name, @Description, @DataPath, @Parameters, @InsertTime, @UpdateTime)", pars) > 0;
    		}
    		public bool Insert(App info)
    		{
    			SQLiteParameter[] pars = new SQLiteParameter[]
    			{
    				new SQLiteParameter("@Id", info.Id),
    				new SQLiteParameter("@Name", info.Name),
    				new SQLiteParameter("@Description", info.Description),
    				new SQLiteParameter("@DataPath", info.DataPath),
    				new SQLiteParameter("@Parameters", info.Parameters),
    				new SQLiteParameter("@InsertTime", info.InsertTime.ToString("yyyy-MM-dd HH:mm:ss")),
    				new SQLiteParameter("@UpdateTime", info.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"))
    			};
    			return SQLiteDBHelper.ExecuteNonQuery(CommandType.Text, "insert into tb_app (Id, Name, Description, DataPath, Parameters, InsertTime, UpdateTime)values (@Id, @Name, @Description, @DataPath, @Parameters, @InsertTime, @UpdateTime)", pars) > 0;
    		}
    		public bool Update(App info)
    		{
    			SQLiteParameter[] pars = new SQLiteParameter[]
    			{
    				new SQLiteParameter("@Id", info.Id),
    				new SQLiteParameter("@Name", info.Name),
    				new SQLiteParameter("@Description", info.Description),
    				new SQLiteParameter("@DataPath", info.DataPath),
    				new SQLiteParameter("@Parameters", info.Parameters),
    				new SQLiteParameter("@InsertTime", info.InsertTime.ToString("yyyy-MM-dd HH:mm:ss")),
    				new SQLiteParameter("@UpdateTime", info.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"))
    			};
    			return SQLiteDBHelper.ExecuteNonQuery(CommandType.Text, "update tb_app set Name=@Name, Description=@Description, DataPath=@DataPath, Parameters=@Parameters, InsertTime=@InsertTime, UpdateTime=@UpdateTime where Id=@Id", pars) > 0;
    		}
    		public bool Delete(int id)
    		{
    			SQLiteParameter[] pars = new SQLiteParameter[]
    			{
    				new SQLiteParameter("@Id", id)
    			};
    			return SQLiteDBHelper.ExecuteNonQuery(CommandType.Text, "delete from tb_app where Id=@Id", pars) > 0;
    		}
    		public void Clear()
    		{
    			SQLiteDBHelper.ExecuteNonQuery(CommandType.Text, "delete from tb_app", null);
    		}
    		public App ConvertModel(DbDataReader reader)
    		{
    			return new App
    			{
    				Id = Convert.ToInt32(reader["Id"]),
    				Name = Convert.ToString(reader["Name"]),
    				Description = Convert.ToString(reader["Description"]),
    				DataPath = Convert.ToString(reader["DataPath"]),
    				Parameters = Convert.ToString(reader["Parameters"]),
    				InsertTime = Convert.ToDateTime(reader["InsertTime"]),
    				UpdateTime = Convert.ToDateTime(reader["UpdateTime"])
    			};
    		}
    		public IList<App> ConvertModelList(DbDataReader reader)
    		{
    			List<App> list = new List<App>();
    			while (reader.Read())
    			{
    				list.Add(this.ConvertModel(reader));
    			}
    			return list;
    		}
    	}
    
  • 相关阅读:
    leetcode 3sum
    leetcode majority elements
    php调取linux的压缩命令进行压缩
    mysql 分区、分表、分库分表。
    如何在数据库中使用索引
    PDO 的基本操作
    JavaScript中常见的字符串操作函数及用法汇总
    php-fpm
    phpmyadmin导入导出数据库文件最大限制的解决方法
    php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳。
  • 原文地址:https://www.cnblogs.com/wywnet/p/4776306.html
Copyright © 2011-2022 走看看