android项目中单实例数据库类
一、数据库操作
package com.ping.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
/**
* @describe <数据库操作>
*/
public class SQLiteTool extends SQLiteOpenHelper {
private static final String DB_NAME = "medicalscience.db"; // 数据库文件名
private static final int VERSION = 1;// 数据库版本
public static SQLiteTool newInstance(Context context) {
return new SQLiteTool(context, DB_NAME, null, VERSION);
}
private SQLiteTool(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DBTCollect.createTableSQL());//有需要创建表时,可以在这添加
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//当数据库版本变大时调用
onCreate(db);
}
}
二、数据库管理类
package com.ping.db;
import java.util.concurrent.atomic.AtomicInteger;
import android.annotation.SuppressLint;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import com.ping.MyApplication;
/**
* @describe <数据库管理类>
*/
public class DBManager {
private AtomicInteger dbOpenCount = new AtomicInteger();//计数器
private static DBManager instance;
private static SQLiteTool sqlLiteTool;
private SQLiteDatabase database;
public static synchronized DBManager getInstance() {
if (instance == null) {
synchronized (DBManager.class) {
if (instance == null) {
instance = new DBManager();
}
}
}
return instance;
}
private DBManager() {
sqlLiteTool = SQLiteTool.newInstance(MyApplication.getInstance().getApplicationContext());
}
@SuppressLint("NewApi")
public synchronized SQLiteDatabase openDatabase() {
if (dbOpenCount.incrementAndGet() == 1) {
database = sqlLiteTool.getWritableDatabase();
if (Build.VERSION.SDK_INT >= 11) {
database.enableWriteAheadLogging();// 允许读写同时进行
}
}
return database;
}
public synchronized void closeDatabase() {
if (dbOpenCount.decrementAndGet() == 0) {
database.close();
database = null;
}
}
}
三、数据增删改查
package com.ping.db;
import java.util.ArrayList;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
/**
* @describe <数据库操作--收藏表的操作 >
*/
public class DBTCollect {
public static final String TNAME = "Tcollect";
// 创建表的语句
public static String createTableSQL() {
return "CREATE TABLE IF NOT EXISTS " + TNAME + " (kid INTEGER PRIMARY KEY AUTOINCREMENT, id TEXT, title TEXT)";
}
// 删除表的语句
public static String deleteTabelSQL() {
return "DROP TABLE IF EXISTS " + TNAME;
}
//查询数据是否存在
public static boolean isCollected(String id) {
boolean isCollected = false;
SQLiteDatabase db = DBManager.getInstance().openDatabase();//获得SQLiteDatabase对象
String sql = "select * from " + TNAME + " where id = '" + id + "'";
Cursor cursor = db.rawQuery(sql, null);
if (cursor.getCount() > 0) {
isCollected = true;
}
cursor.close();
DBManager.getInstance().closeDatabase();//关闭
return isCollected;
}
// 删除数据
public static void deleteCollect(String mid) {
SQLiteDatabase db = DBManager.getInstance().openDatabase();
db.delete(TNAME, "id = ?", new String[] { id });
DBManager.getInstance().closeDatabase();
}
//增加数据
public static void addCollect(Object obj) {
SQLiteDatabase db = DBManager.getInstance().openDatabase();
ContentValues cv = new ContentValues();
cv.put("id", obj.id);
cv.put("title", obj.title);
db.insert(TNAME, null, cv);
DBManager.getInstance().closeDatabase();
}
//查询数据
public static ArrayList<Object> getAllCollect() {
SQLiteDatabase db = DBManager.getInstance().openDatabase();
Cursor cursor = db.query(TNAME, null, null, null, null, null, null);
ArrayList<Object> objs = new ArrayList<Object>();
while (cursor.moveToNext()) {
Object obj = new Object();
obj.id = cursor.getString(cursor.getColumnIndex("id"));
obj.title = cursor.getString(cursor.getColumnIndex("title"));
objs.add(obj);
}
cursor.close();
DBManager.getInstance().closeDatabase();
return objs;
}
}
转载于:https://blog.51cto.com/9437752/1579041
android项目中单实例数据库类相关推荐
- android mysql项目实例_android项目中单实例数据库类
一.数据库操作 package com.ping.db; import android.content.Context; import android.database.sqlite.SQLiteDa ...
- XamarinSQLite教程在Xamarin.Android项目中提取数据库文件
XamarinSQLite教程在Xamarin.Android项目中提取数据库文件 由于不能直接打开该文件,开发者需要先将数据库文件从Android系统中提取出来.操作步骤如下. (5)选择MyDoc ...
- XamarinSQLite教程在Xamarin.Android项目中定位数据库文件
XamarinSQLite教程在Xamarin.Android项目中定位数据库文件 实际开发中,经常需要验证数据库操作的正确性.这个时候,需要打开数据库文件,进行确认.下面是如何找到MyDocumen ...
- XamarinSQLite教程在Xamarin.Android项目中使用数据库
XamarinSQLite教程在Xamarin.Android项目中使用数据库 在Xamarin.Android项目中使用预设数据库的具体操作步骤如下: (1)创建一个Xamarin.Android项 ...
- xamarin怎么调用java的_XamarinSQLite教程在Xamarin.Android项目中使用数据库
XamarinSQLite教程在Xamarin.Android项目中使用数据库 在Xamarin.Android项目中使用预设数据库的具体操作步骤如下: (1)创建一个Xamarin.Android项 ...
- Android项目开发常用工具类GlideEngine
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl GlideEngine概述 GlideEngine用于利用Glide加载图片. GlideEn ...
- Android项目开发常用工具类FlowLayout
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl FlowLayout概述 FlowLayout用于流式布局标签控件. FlowLayout截图 ...
- (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例
Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21 我要评论 这篇文章主要介绍了Android项 ...
- android+小米文件管理器源码,小米开源文件管理器MiCodeFileExplorer-源码研究(2)-2个单实例工具类...
从本篇开始,讲解net.micode.fileexplorer.util工具包中的类. 这个包下的类,功能也比较单一和独立.很多代码的思想和实现,可以用于JavaWeb和Android等多种环境中. ...
最新文章
- pythonwin 崩溃的解决办法【转贴】
- C语言经典例21-猴子吃桃问题
- 【机器学习基础】前置知识(四):一文掌握Pandas用法
- linux 学习 常用命令
- [译] RESTful API 设计最佳实践
- 云计算解决方案--百度文库
- 关于变量声明的var,let,const
- linux 下安装wps
- 2019eclipse 中文汉化包 安装教程
- 空号检测模块设计原理
- 如何修改IMX6UL开发板时钟配置?
- 颜色选择器---Kodu少儿编程第九天
- 开发过程问题汇总(不断更新)
- setup time和hold time
- ACM-ICPC 2018 焦作赛区网络预赛A. Magic Mirror(签到题)
- Windows操作系统发展简史【图】
- 美少年为“苹果”编程挣钱 12岁办软件开发公司
- 游泳过后,耳朵进水怎么办,中耳进水
- ps写php,ps毛笔字体怎么做
- Python爬虫-DAY5淘宝页面爬取
热门文章
- 多线程编程(三)--创建线程之Thread VS Runnable
- allegro大十字光标设置方法
- [转]JS Cookie 中文乱码
- 一个html5流星雨源码
- linux php cli 太多,【linux】php cli 处理能力到底有多强?
- 扩展类加载器 Extension ClassLoader
- be服务器未正常运行5.4.15,在CatOS平台上恢复处于errDisable状态的端口-Cisco.PDF
- 计算机报名显示事务已被锁死,ORA-01591错误处理: 锁定已被有问题的分配事务处理20.18.156406挂起(转载)...
- 计算机网络基础:TCP/IP协议相关知识笔记​
- 10个常见的JS语言错误总汇