zoukankan      html  css  js  c++  java
  • SQLite 帮助类

    public static class SqliteHelper
    {
    	/// <summary>    
    	/// 获得连接对象   
    	/// </summary>    
    	/// <returns>SQLiteConnection</returns>       
    	public static SQLiteConnection GetSQLiteConnection()
    	{
    		//Sqlite数据库地址<br>            
    		string str = AppDomain.CurrentDomain.BaseDirectory;
    		var con = new SQLiteConnection("Data Source=" + str + "DataBass\InfoServiceDbB.db");
    		return con;
    	}
    
    	/// <summary>
    	/// 准备操作命令参数
    	/// </summary>
    	/// <param name="cmd">SQLiteCommand</param>
    	/// <param name="conn">SQLiteConnection</param>
    	/// <param name="cmdText">Sql命令文本</param>
    	/// <param name="data">参数数组</param>
    	private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, Dictionary<String, String> data)
    	{
    		if (conn.State != ConnectionState.Open)
    			conn.Open();
    		cmd.Parameters.Clear();
    		cmd.Connection = conn;
    		cmd.CommandText = cmdText;
    		cmd.CommandType = CommandType.Text;
    		cmd.CommandTimeout = 30;
    		if (data != null && data.Count >= 1)
    		{
    			foreach (KeyValuePair<String, String> val in data)
    			{
    				cmd.Parameters.AddWithValue(val.Key, val.Value);
    			}
    		}
    	}
    
    	/// <summary>
    	/// 查询,返回DataSet
    	/// </summary>
    	/// <param name="cmdText">Sql命令文本</param>
    	/// <param name="data">参数数组</param>
    	/// <returns>DataSet</returns>
    	public static DataSet ExecuteDataset(string cmdText, Dictionary<string, string> data)
    	{
    		var ds = new DataSet();
    		using (SQLiteConnection connection = GetSQLiteConnection())
    		{
    			var command = new SQLiteCommand();
    			PrepareCommand(command, connection, cmdText, data);
    			var da = new SQLiteDataAdapter(command);
    			da.Fill(ds);
    		}
    		return ds;
    	}
    
    	/// <summary>
    	/// 查询,返回DataTable
    	/// </summary>
    	/// <param name="cmdText">Sql命令文本</param>
    	/// <param name="data">参数数组</param>
    	/// <returns>DataTable</returns>
    	public static DataTable ExecuteDataTable(string cmdText, Dictionary<string, string> data)
    	{
    		var dt = new DataTable();
    		using (SQLiteConnection connection = GetSQLiteConnection())
    		{
    			var command = new SQLiteCommand();
    			PrepareCommand(command, connection, cmdText, data);
    			SQLiteDataReader reader = command.ExecuteReader();
    			dt.Load(reader);
    		}
    		return dt;
    	}
    
    	/// <summary>
    	/// 返回一行数据
    	/// </summary>
    	/// <param name="cmdText">Sql命令文本</param>
    	/// <param name="data">参数数组</param>
    	/// <returns>DataRow</returns>
    	public static DataRow ExecuteDataRow(string cmdText, Dictionary<string, string> data)
    	{
    		DataSet ds = ExecuteDataset(cmdText, data);
    		if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
    			return ds.Tables[0].Rows[0];
    		return null;
    	}
    
    	/// <summary>
    	/// 执行数据库操作
    	/// </summary>
    	/// <param name="cmdText">Sql命令文本</param>
    	/// <param name="data">传入的参数</param>
    	/// <returns>返回受影响的行数</returns>
    	public static int ExecuteNonQuery(string cmdText, Dictionary<string, string> data)
    	{
    		using (SQLiteConnection connection = GetSQLiteConnection())
    		{
    			var command = new SQLiteCommand();
    			PrepareCommand(command, connection, cmdText, data);
    			return command.ExecuteNonQuery();
    		}
    	}
    
    	/// <summary>
    	/// 返回SqlDataReader对象
    	/// </summary>
    	/// <param name="cmdText">Sql命令文本</param>
    	/// <param name="data">传入的参数</param>
    	/// <returns>SQLiteDataReader</returns>
    	public static SQLiteDataReader ExecuteReader(string cmdText, Dictionary<string, string> data)
    	{
    		var command = new SQLiteCommand();
    		SQLiteConnection connection = GetSQLiteConnection();
    		try
    		{
    			PrepareCommand(command, connection, cmdText, data);
    			SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
    			return reader;
    		}
    		catch
    		{
    			connection.Close();
    			command.Dispose();
    			throw;
    		}
    	}
    
    	/// <summary>
    	/// 返回结果集中的第一行第一列,忽略其他行或列
    	/// </summary>
    	/// <param name="cmdText">Sql命令文本</param>
    	/// <param name="data">传入的参数</param>
    	/// <returns>object</returns>
    	public static object ExecuteScalar(string cmdText, Dictionary<string, string> data)
    	{
    		using (SQLiteConnection connection = GetSQLiteConnection())
    		{
    			var cmd = new SQLiteCommand();
    			PrepareCommand(cmd, connection, cmdText, data);
    			return cmd.ExecuteScalar();
    		}
    	}
    
    	/// <summary>
    	/// 分页查询
    	/// </summary>
    	/// <param name="recordCount">总记录数</param>
    	/// <param name="pageIndex">页牵引</param>
    	/// <param name="pageSize">页大小</param>
    	/// <param name="cmdText">Sql命令文本</param>
    	/// <param name="countText">查询总记录数的Sql文本</param>
    	/// <param name="data">命令参数</param>
    	/// <returns>DataSet</returns>
    	public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, Dictionary<string, string> data)
    	{
    		if (recordCount < 0)
    			recordCount = int.Parse(ExecuteScalar(countText, data).ToString());
    		var ds = new DataSet();
    		using (SQLiteConnection connection = GetSQLiteConnection())
    		{
    			var command = new SQLiteCommand();
    			PrepareCommand(command, connection, cmdText, data);
    			var da = new SQLiteDataAdapter(command);
    			da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result");
    		}
    		return ds;
    	}
    
    	/// <summary>
    	/// 清除空间
    	/// </summary>
    	public static void ResetDataBass()
    	{
    		using (SQLiteConnection conn = GetSQLiteConnection())
    		{
    			var cmd = new SQLiteCommand();
    
    			if (conn.State != ConnectionState.Open)
    				conn.Open();
    			cmd.Parameters.Clear();
    			cmd.Connection = conn;
    			cmd.CommandText = "vacuum";
    			cmd.CommandType = CommandType.Text;
    			cmd.CommandTimeout = 30;
    			cmd.ExecuteNonQuery();
    		}
    	}
    
    }
      
    

      

  • 相关阅读:
    第十七篇 ORM跨表查询和分组查询---二次剖析
    第十六篇随机验证码
    第十五篇 用户认证auth
    crawler_网络爬虫中编码的正确处理与乱码的解决策略
    java_Eclipse自动生成作者、日期注释等功能设置_导入 xml方式
    mysql_windows_安装版添加到服务开机自启动
    java_model_dao_自动生成_generator-mybatis-generator-1.3.2 基于maven插件
    java_eclipse_maven_svn_主题彩色插件_全屏插件
    mysql_MYSQL远程登录权限设置
    crawler_phantomjs_windows_linux下demo
  • 原文地址:https://www.cnblogs.com/itsone/p/13507639.html
Copyright © 2011-2022 走看看