一、数据库操作

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项目中单实例数据库类相关推荐

  1. android mysql项目实例_android项目中单实例数据库类

    一.数据库操作 package com.ping.db; import android.content.Context; import android.database.sqlite.SQLiteDa ...

  2. XamarinSQLite教程在Xamarin.Android项目中提取数据库文件

    XamarinSQLite教程在Xamarin.Android项目中提取数据库文件 由于不能直接打开该文件,开发者需要先将数据库文件从Android系统中提取出来.操作步骤如下. (5)选择MyDoc ...

  3. XamarinSQLite教程在Xamarin.Android项目中定位数据库文件

    XamarinSQLite教程在Xamarin.Android项目中定位数据库文件 实际开发中,经常需要验证数据库操作的正确性.这个时候,需要打开数据库文件,进行确认.下面是如何找到MyDocumen ...

  4. XamarinSQLite教程在Xamarin.Android项目中使用数据库

    XamarinSQLite教程在Xamarin.Android项目中使用数据库 在Xamarin.Android项目中使用预设数据库的具体操作步骤如下: (1)创建一个Xamarin.Android项 ...

  5. xamarin怎么调用java的_XamarinSQLite教程在Xamarin.Android项目中使用数据库

    XamarinSQLite教程在Xamarin.Android项目中使用数据库 在Xamarin.Android项目中使用预设数据库的具体操作步骤如下: (1)创建一个Xamarin.Android项 ...

  6. Android项目开发常用工具类GlideEngine

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl GlideEngine概述 GlideEngine用于利用Glide加载图片. GlideEn ...

  7. Android项目开发常用工具类FlowLayout

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl FlowLayout概述 FlowLayout用于流式布局标签控件. FlowLayout截图 ...

  8. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例

    Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21 我要评论 这篇文章主要介绍了Android项 ...

  9. android+小米文件管理器源码,小米开源文件管理器MiCodeFileExplorer-源码研究(2)-2个单实例工具类...

    从本篇开始,讲解net.micode.fileexplorer.util工具包中的类. 这个包下的类,功能也比较单一和独立.很多代码的思想和实现,可以用于JavaWeb和Android等多种环境中. ...

最新文章

  1. pythonwin 崩溃的解决办法【转贴】
  2. C语言经典例21-猴子吃桃问题
  3. 【机器学习基础】前置知识(四):一文掌握Pandas用法
  4. linux 学习 常用命令
  5. [译] RESTful API 设计最佳实践
  6. 云计算解决方案--百度文库
  7. 关于变量声明的var,let,const
  8. linux 下安装wps
  9. 2019eclipse 中文汉化包 安装教程
  10. 空号检测模块设计原理
  11. 如何修改IMX6UL开发板时钟配置?
  12. 颜色选择器---Kodu少儿编程第九天
  13. 开发过程问题汇总(不断更新)
  14. setup time和hold time
  15. ACM-ICPC 2018 焦作赛区网络预赛A. Magic Mirror(签到题)
  16. Windows操作系统发展简史【图】
  17. 美少年为“苹果”编程挣钱 12岁办软件开发公司
  18. 游泳过后,耳朵进水怎么办,中耳进水
  19. ps写php,ps毛笔字体怎么做
  20. Python爬虫-DAY5淘宝页面爬取

热门文章

  1. 多线程编程(三)--创建线程之Thread VS Runnable
  2. allegro大十字光标设置方法
  3. [转]JS Cookie 中文乱码
  4. 一个html5流星雨源码
  5. linux php cli 太多,【linux】php cli 处理能力到底有多强?
  6. 扩展类加载器 Extension ClassLoader
  7. be服务器未正常运行5.4.15,在CatOS平台上恢复处于errDisable状态的端口-Cisco.PDF
  8. 计算机报名显示事务已被锁死,ORA-01591错误处理: 锁定已被有问题的分配事务处理20.18.156406挂起(转载)...
  9. 计算机网络基础:TCP/IP协议相关知识笔记​
  10. 10个常见的JS语言错误总汇