`
forhope
  • 浏览: 365768 次
  • 性别: Icon_minigender_1
  • 来自: 帝都
社区版块
存档分类
最新评论

sqlite工具类

 
阅读更多
package com.asc.db;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * 数据库公共类,提供基本数据库操作
 * 
 * @author raymon
 * 
 */
public class DBManager {
	// 默认数据库
	private static final String DB_NAME = "asc.db";

	// 数据库版本
	private static final int DB_VERSION = 1;

	// 执行open()打开数据库时,保存返回的数据库对象
	private SQLiteDatabase mSQLiteDatabase = null;

	// 由SQLiteOpenHelper继承过来
	private DatabaseHelper mDatabaseHelper = null;

	// 本地Context对象
	private Context mContext = null;
	
	private static DBManager dbConn= null;
	
	// 查询游标对象
	private Cursor cursor;

	/**
	 * SQLiteOpenHelper内部类
	 */
	private static class DatabaseHelper extends SQLiteOpenHelper {

		DatabaseHelper(Context context) {
			// 当调用getWritableDatabase()或 getReadableDatabase()方法时,创建一个数据库
			super(context, DB_NAME, null, DB_VERSION);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			db.execSQL("CREATE TABLE ad_record(id PRIMARY KEY NOT NULL, adUrl TEXT, apMac TEXT, createDate DATETIME);");
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			db.execSQL("DROP TABLE IF EXISTS ad_record");
			onCreate(db);
		}
	}

	/**
	 * 构造函数
	 * 
	 * @param mContext
	 */
	private DBManager(Context mContext) {
		super();
		this.mContext = mContext;
	}
	
	public static DBManager getInstance(Context mContext){
		if (null == dbConn) {
			dbConn = new DBManager(mContext);
		}
		return dbConn;
	}

	/**
	 * 打开数据库
	 */
	public void open() {
		mDatabaseHelper = new DatabaseHelper(mContext);
		mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
	}

	/**
	 * 关闭数据库
	 */
	public void close() {
		if (null != mDatabaseHelper) {
			mDatabaseHelper.close();
		}
		if (null != cursor) {
			cursor.close();
		}
	}

	/**
	 * 插入数据
	 * @param tableName 表名
	 * @param nullColumn null
	 * @param contentValues 名值对
	 * @return 新插入数据的ID,错误返回-1
	 * @throws Exception
	 */
	public long insert(String tableName, String nullColumn,
			ContentValues contentValues) throws Exception {
		try {
			return mSQLiteDatabase.insert(tableName, nullColumn, contentValues);
		} catch (Exception e) {
			throw e;
		}
	}

	/**
	 * 通过主键ID删除数据
	 * @param tableName 表名
	 * @param key 主键名
	 * @param id 主键值
	 * @return 受影响的记录数
	 * @throws Exception
	 */
	public long delete(String tableName, String key, int id) throws Exception {
		try {
			return mSQLiteDatabase.delete(tableName, key + " = " + id, null);
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * 查找表的所有数据
	 * @param tableName 表名
	 * @param columns 如果返回所有列,则填null
	 * @return
	 * @throws Exception
	 */
	public Cursor findAll(String tableName, String [] columns) throws Exception{
		try {
			cursor = mSQLiteDatabase.query(tableName, columns, null, null, null, null, null);
			cursor.moveToFirst();
			return cursor;
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * 根据主键查找数据
	 * @param tableName 表名
	 * @param key 主键名
	 * @param id  主键值
	 * @param columns 如果返回所有列,则填null
	 * @return Cursor游标
	 * @throws Exception 
	 */
	public Cursor findById(String tableName, String key, int id, String [] columns) throws Exception {
		try {
			return mSQLiteDatabase.query(tableName, columns, key + " = " + id, null, null, null, null);
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * 根据条件查询数据
	 * @param tableName 表名
	 * @param names 查询条件
	 * @param values 查询条件值
	 * @param columns 如果返回所有列,则填null
	 * @param orderColumn 排序的列
	 * @param limit 限制返回数
	 * @return Cursor游标
	 * @throws Exception
	 */
	public Cursor find(String tableName, String [] names, String [] values, String [] columns, String orderColumn, String limit) throws Exception{
		try {
			StringBuffer selection = new StringBuffer();
			for (int i = 0; i < names.length; i++) {
				selection.append(names[i]);
				selection.append(" = ?");
				if (i != names.length - 1) {
					selection.append(",");
				}
			}
			cursor = mSQLiteDatabase.query(true, tableName, columns, selection.toString(), values, null, null, orderColumn, limit);
			cursor.moveToFirst();
			return cursor;
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * 
	 * @param tableName 表名
	 * @param names 查询条件
	 * @param values 查询条件值
	 * @param args 更新列-值对
	 * @return true或false
	 * @throws Exception
	 */
	public boolean udpate(String tableName, String [] names, String [] values, ContentValues args) throws Exception{
		try {
			StringBuffer selection = new StringBuffer();
			for (int i = 0; i < names.length; i++) {
				selection.append(names[i]);
				selection.append(" = ?");
				if (i != names.length - 1) {
					selection.append(",");
				}
			}
			return mSQLiteDatabase.update(tableName, args, selection.toString(), values) > 0;
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * 执行sql语句,包括创建表、删除、插入
	 * 
	 * @param sql
	 */
	public void executeSql(String sql) {
		mSQLiteDatabase.execSQL(sql);
	}

}
//转载请注明出处:http://forhope.iteye.com/blog/1461412
分享到:
评论
1 楼 zhangjialu_vip 2015-02-01  
find 方法有错误。207行修改成 selection.append(" and ");

我居然是第一个哦!

相关推荐

    SQLite数据库使用工具类

    三、SQLite工具类封装 1. 数据库操作接口:定义一个接口,包含增删改查等基本操作方法,如insert()、delete()、update()和query()。 2. 数据库帮助类:继承SQLiteOpenHelper,实现上述接口中的方法。这里需要处理SQL...

    Sqlite的C#通用类和Sqlite工具

    这个压缩包包含两个关键文件,一个是`SqliteHelper.cs`,它很可能是一个C#类,提供了与Sqlite数据库进行交互的通用方法。这个类可能包含了连接数据库、执行SQL语句、插入、更新、删除和查询数据等基本操作的封装。...

    sqlite数据库工具类

    在这个"sqlite数据库工具类"中,开发者已经基于Room技术封装了数据库操作,主要包括`DbManager`类和`DbHelper`类,这两个类是进行数据库管理和帮助操作的核心组件。 首先,我们来看`DbManager`类。这个类通常作为...

    SQLite工具类

    SQLite工具类是一个在Java开发中常用的实用程序,主要用于与SQLite数据库进行交互。SQLite是一个轻量级、嵌入式的关系型数据库,广泛应用于移动设备、桌面系统以及服务器端,尤其是在资源有限或者需要本地数据存储的...

    Android开发中的SQLite数据库的增删改查工具类

    1. **SQLiteManager**: 这个类通常是对SQLite数据库操作的封装,提供一套简洁易用的API,用于简化数据库的交互。例如,它可能包含以下方法: - `insert`: 新增数据,利用`ContentValues`对象存储待插入的数据,通过...

    java操作sqlite数据库工具代码及jar包

    本资源提供了一个便捷的方式来与SQLite数据库进行交互,包括必要的jar包和一个预设的工具类。下面将详细介绍如何使用这些资源以及涉及的核心Java和SQLite知识。 首先,`sqlite-jdbc.jar`是Java SQLite驱动,它允许...

    Sqlite使用工具类

    在实际项目中,可以创建一个工具类,封装上述操作,提供更方便的接口供其他类使用。例如,创建一个`SQLiteUtils`类,包含`insert()`, `query()`, `update()`, `delete()`等方法,这样可以更好地管理和维护数据库操作...

    Python带动态参数功能的sqlite工具类

    Python中的SQLite工具类通常用于简化对SQLite数据库的操作,使得开发者能够更方便地进行数据库的连接、查询、插入、更新和删除等操作。在这个特定的工具类中,特别强调了动态参数的功能,允许用户以灵活的方式传递...

    Android SQLite学习工具

    这篇博客“Android SQLite学习工具”可能详细介绍了如何在Android环境中使用SQLite进行数据操作,并提供了一个实用的SQLite管理工具——sqlite3.exe。 SQLite数据库在Android中的应用主要包括创建数据库、创建表、...

    kotlin操作sqlite工具类.kts

    这个工具类可以帮助你简化 SQLite 数据库的操作,包括查询、插入、更新和删除。通过参数化查询可以有效避免 SQL 注入,并且使用了 use 语法块确保资源(如 Connection 和 PreparedStatement)在操作完成后正确关闭

    sqlite 数据库操作C# 工具类及使用实例

    本篇文章将深入探讨如何在C#中使用SQLite数据库,以及在VS2010下创建和操作SQLite数据库的工具类和实例。 首先,我们需要引入对SQLite的引用。在VS2010中,可以通过NuGet包管理器安装System.Data.SQLite库。这个库...

    sqlite辅助工具(含源码)

    "Service"、"Model"、"Lib"、"Dao"、"SqliteTool"和"Common"这些文件夹很可能分别对应服务层、模型层、库文件、数据访问对象、SQLite工具类和公共辅助类的代码组织结构。 总的来说,这个资源为学习和使用SQLite提供...

    SqLite数据库操作工具

    SQLite数据库操作工具使得用户能够方便地管理和操作SQLite数据库,进行数据的增删改查等操作,而无需深入了解复杂的SQL语法或数据库管理系统。 SQLite Studio是一款非常实用的SQLite数据库管理工具,它提供了一个...

    Sqlite 操作类 C# .net

    Sqlite 操作类 C# .net,嵌入式SQL //创建一个数据库文件 string datasource = @"d:/ChinaPower.s3db"; // System.Data.SQLite.SQLiteConnection.CreateFile&#40;datasource&#41;; //连接数据库 System.Data....

    SQLite数据库查询工具

    主要用于Android开发时,本地SQLite数据库的管理工具。

    Unity3d Sqlite数据库

    在实际项目中,为了更好地管理数据库操作,通常会创建一个数据库管理类,封装这些基础方法,并考虑线程安全和错误处理。此外,考虑到性能,你可能还需要使用异步操作来避免阻塞主线程。 总之,SQLite为Unity3D提供...

    VC6.0 C语言操作sqlite3用到的工具

    描述中提到的链接指向了一个CSDN博客文章,虽然具体内容无法在当前环境下获取,但通常这类博客会详细介绍如何在VC6.0环境下配置SQLite3的开发环境,包括如何包含sqlite3库,设置预处理器宏,以及如何编译和链接...

    SQLite帮助类SQLiteHelper

    一些小型的应用程序需要使用到数据库,sqlite可以说是最好的选择。这里个人整理了一般简单通用的操作类SQLiteHelper

    sqlite数据库管理工具、带.net调用库和java驱动包

    在这个名为"sqlite数据库管理工具、带.net调用库和java驱动包"的压缩包中,包含了用于管理和操作SQLite数据库的工具,以及针对.NET和Java平台的驱动程序,使得开发者可以方便地在这些平台上与SQLite进行交互。...

Global site tag (gtag.js) - Google Analytics