import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* 数据库操作助手类
*/
public class RFIDSQLiteOpenHelper extends SQLiteOpenHelper {
public static String RFID_DISTINGUISH = "RFIDDistinguish";
// 数据库名称
public static final String DBNAME = "RFIDDistinguishSQL.db";
// 数据库版本
public static final int VERSION = 1;
// 建表语句,大小写不敏感
private static final String CREATETABLE = "create table "
+ RFID_DISTINGUISH
+ "(recordid string,content string,times string)";
public RFIDSQLiteOpenHelper(Context context) {
super(context, DBNAME, null, VERSION);
}
// 创建表
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATETABLE);
}
// 更新表
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
this.deleteDB(db);
this.onCreate(db);
}
// 删除表
private void deleteDB(SQLiteDatabase db) {
db.execSQL("drop table if exists " + RFID_DISTINGUISH);
}
}
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.rfid.RFIDDistinguishBean;
import java.util.ArrayList;
/**
* 数据库管理类
*/
public class DatabaseManager {
private RFIDSQLiteOpenHelper dbHelper;
public DatabaseManager(Context context) {
if (dbHelper==null){
dbHelper = new RFIDSQLiteOpenHelper(context);
}
}
// 插入记录
public synchronized int insert(RFIDDistinguishBean contentBean) {
Log.e("SQLite", "----insert----");
SQLiteDatabase db = dbHelper.getWritableDatabase();
if (db.isOpen()){
return 0;
}
db.beginTransaction();
try {
db.execSQL("insert into " + dbHelper.RFID_DISTINGUISH
+ "(recordid,content,times) values(?,?,?)",
new Object[] {contentBean.getRecordId(),contentBean.getContent(),contentBean.getTimes()});
db.setTransactionSuccessful();
} catch (Exception e) {
return 0;
} finally {
db.endTransaction();
}
db.close();
return 1;
}
// 删除记录
public synchronized int delete(RFIDDistinguishBean contentBean){
Log.e("SQLite", "----delete----");
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();
try {
db.execSQL("delete from " + dbHelper.RFID_DISTINGUISH + " where recordid = ?",
new Object[] {contentBean.getRecordId()});
db.setTransactionSuccessful();
} catch (Exception e) {
return 0;
} finally {
db.endTransaction();
}
db.close();
return 1;
}
//清空表记录
public synchronized void deleteHistoryName(){
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();
db.execSQL("delete from " + dbHelper.RFID_DISTINGUISH);
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
public synchronized void deleteTable() {
SQLiteDatabase database = dbHelper.getWritableDatabase();
database.beginTransaction();
database.execSQL("drop table " + dbHelper.RFID_DISTINGUISH);
database.setTransactionSuccessful();
database.endTransaction();
database.close();
}
// 更新记录
public synchronized int update(RFIDDistinguishBean contentBean) {
Log.e("SQLite", "----update----");
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();
try {
db.execSQL("update " + dbHelper.RFID_DISTINGUISH
+ " set recordid=? where content=?,times=? ",
new Object[] {contentBean.getRecordId(),contentBean.getContent(),contentBean.getTimes()});
db.setTransactionSuccessful();
} catch (Exception e) {
return 0;
} finally {
db.endTransaction();
}
db.close();
return 1;
}
// 查询记录
public synchronized ArrayList<RFIDDistinguishBean> query(String id) {
Log.e("SQLite", "----query----");
ArrayList<RFIDDistinguishBean> list = new ArrayList<RFIDDistinguishBean>();
SQLiteDatabase db = dbHelper.getReadableDatabase();
if (db.isOpen()){
System.out.println("query:::is Open");
}
Cursor cursor;
RFIDDistinguishBean distinguishBean;
// 若fileId为null或""则查询所有记录
if (id == null || id.equals("")) {
cursor = db.rawQuery("select * from " + dbHelper.RFID_DISTINGUISH, null);
} else {
cursor = db.rawQuery("select * from " + dbHelper.RFID_DISTINGUISH
+ " where recordid=?", new String[] { id });
}
while (cursor.moveToNext()) {
distinguishBean = new RFIDDistinguishBean();
String str = cursor.getString(cursor.getColumnIndex("content"));
distinguishBean.setContent(str);
String str2 = cursor.getString(cursor.getColumnIndex("times"));
distinguishBean.setTimes(str2);
String str3 = cursor.getString(cursor.getColumnIndex("recordid"));
distinguishBean.setRecordId(str3);
list.add(distinguishBean);
}
cursor.close();
db.close();
if (list.size() == 0) {
Log.e("SQLite", "****表中无数据****");
}
return list;
}
}
使用方法:
DatabaseManager databaseManager = new DatabaseManager(this);
databaseManager.databaseManager.query("");
遇到问题:SQLiteDatabaseLockedException: database is locked
1.SQLiteDatabase database = dbHelper.getWritableDatabase() 和SQLiteDatabase database = dbHelper.getReadableDatabase();调用这两个方法时后边一定要注意下边几个方法
database.setTransactionSuccessful();
database.endTransaction();-----如果有database.beginTransaction();需要加
database.close();-----重点:操作完数据库一定要记得关闭