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; /**
* 数据库公共类,提供基本数据库操作*/
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);
} }

JAVA 数据库操作工具类----sqllite的更多相关文章

  1. Java SE 之 数据库操作工具类(DBUtil)设计

    JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...

  2. MinerDB.java 数据库工具类

    MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...

  3. docker 部署vsftpd服务、验证及java ftp操作工具类

    docker部署vsftpd服务 新建ftp文件存储目录/home/ftp cd /home mkdir ftp 创建一个组,用于存放ftp用户 groupadd ftpgroups 创建ftp用户, ...

  4. JAVA文件操作工具类(读、增、删除、复制)

    使用JAVA的JFinal框架 1.上传文件模型类UploadFile /** * Copyright (c) 2011-2017, James Zhan 詹波 (jfinal@126.com). * ...

  5. JavaWeb网上图书商城完整项目-数据库操作工具类2-MapHandle的高级用法

    1.现在在上面一章的基础上,我们引入一个address表,该表记录person类的地址,address表的格式如下所示 现在person类要和address表想关联,得到当前联系人的住宅地址,我们应该 ...

  6. JavaWeb网上图书商城完整项目-数据库操作工具类

    1.首先安装数据库,在windows上安装和在unix上面安装环境不一样,我在自己的本地电脑上安装,安装成功之后,如果使用navicat远程工具访问,需要允许mysql远程能被访问 方法二.直接授权( ...

  7. Java知多少(107)几个重要的java数据库访问类和接口

    编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...

  8. java数据库查询类

    通用查询数据库辅助类,可实现任意查询语句的查询,还可以进行多结果集查询. 类的代码: package com.hongyuan.db; import java.math.BigDecimal; imp ...

  9. Mysqlutil.JDBCutil.Dtabaseutil数据库操作工具类[批量操作]

    一个用来操作数据库的常用工具类. 提供批量操作,生成建表,插入语句等 操作示例: // 1.获取连接 DataBaseUtil jdbc = new DataBaseUtil(); jdbc.getC ...

随机推荐

  1. Django 实现下载功能时中文文件名问题

    先上最终解决代码(有待验证各浏览器效果): def download_file(request, file_path): file_name = os.path.basename(file_path) ...

  2. 「CF858F」 Wizard's Tour

    传送门 Luogu 解题思路 首先对于树的情况,我们很显然有一种贪心策略: 对于每一个节点先匹配子树,然后在还可以匹配的儿子间尽可能匹配,要是多出来一个就往上匹配. 推广到图的情况... 我们在图的生 ...

  3. 使用在线编辑 svg 软件修改 svg 图片

    网站需要使用图标字体,但设计师给的图标大小有问题,故使用下面说陈述方法简单修改了一下.使用到的在线编辑软件地址为:https://editor.method.ac/ 问题: 注:至于如何使用图标字体( ...

  4. PTA----7-3树的遍历

    7-3 树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数 ...

  5. 连接数据库的url

    mysql: jdbc:mysql://localhost:3306:test这句里面分如下解析:jdbc:mysql:// 是指JDBC连接方式:localhost: 是指你的本机地址:3306 S ...

  6. Ext里dialog弹窗关闭与父窗口刷新问题总结

    1.弹出弹窗的js代码 var dlg = new J.dialog({ id: 'unDelTel', title:'缴费', page:encodeURI('<%=basePath%> ...

  7. JAVA 开学测试

    package StudentScore; public class ScoreInformation { String stunumber; //学号 String name; //姓名 doubl ...

  8. [ NLP ] CS224N 学习笔记

    Lecture1 One-Hot 定义:用N位状态寄存器编码N个状态,每个状态都有独立的寄存器位,且这些寄存器位中只有一位有效,说白了就是只能有一个状态.即保证每个样本中的每个特征只有1位处于状态1, ...

  9. IDEA 解决 Maven 依赖冲突的高能神器,这一篇够不够?

    ​ 1.何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的.Maven的依赖机制会导致Jar包的冲突.举个例子,现在你的项目中,使用了两个Jar包,分别是A和B.现在A需要依 ...

  10. 折腾前端条形码(Barcode)扫描识别, 笔记

    barcode @zxing/library 方案 本地勉强把 Demo 在 React 里面跑通, 但是不好控制开始结束, API 不明确.实际识别率很低. 我是用手机屏幕放的条形码, 大概也有影响 ...