您的位置:首页 > 移动开发 > Android开发

Android sqlite工具类

2015-11-04 11:47 537 查看
创建sqlite数据库

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

public class DatabaseHelper extends SQLiteOpenHelper {

//数据库名字
private static final String DB_NAME = "note.db";

//本版号
private static final int VERSION = 1;

//创建表
private static final String CREATE_TABLE_NOTE = "CREATE TABLE note(_id integer primary key autoincrement,"+
"title text, content text, createDate text, updateDate text)";

//删除表
private static final String DROP_TABLE_NOTE = "drop table if exists note";

public DatabaseHelper(Context context) {
super(context, DB_NAME, null, VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
//SQLiteDatabase 用于操作数据库的工具类
db.execSQL(CREATE_TABLE_NOTE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE_NOTE);
db.execSQL(CREATE_TABLE_NOTE);
}
}


下面是采用原生的方式进行增删改查
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.recker.note.data.MetaData;
import com.recker.note.data.Note;

import java.util.ArrayList;

public class DatabaseAdapter {

private DatabaseHelper dbHelper;

public DatabaseAdapter(Context context) {
dbHelper = new DatabaseHelper(context);
}

/**
* 添加数据
*
* @param note
*/
public void create(Note note) {
String sql = "insert into note(title, content, createDate, updateDate)values(?,?,?,?)";
Object[] args = {note.getTitle(), note.getContent(), note.getCreateDate(), note.getUpdateDate()};
SQLiteDatabase db = dbHelper.getWritableDatabase();

db.execSQL(sql, args);
db.close();
}

/**
* 删除数据
*
* @param id
*/
public void remove(int id) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "delete from note where _id = ?";
Object[] args = {id};
db.execSQL(sql, args);
db.close();
}

/**
* 修改数据
*
* @param note
*/
public void update(Note note) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "update note set title = ?, content = ?, updateDate = ? where _id = ?";
Object[] args = {note.getTitle(), note.getContent(), note.getUpdateDate(), note.getId()};
db.execSQL(sql, args);
db.close();
}

/**
* 按id查询
*
* @param id
* @return
*/
public Note findById(int id) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
String sql = "select * from note where _id = ?";
Cursor cursor = db.rawQuery(sql, new String[]{String.valueOf(id)});

Note note = null;
if (cursor.moveToNext()) {
note = new Note();

note.setId(cursor.getInt(cursor.getColumnIndexOrThrow(MetaData.NoteTable._ID)));
note.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.TITLE)));
note.setContent(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.CONTENT)));
note.setCreateDate(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.CREATE_DATE)));
note.setUpdateDate(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.UPDATE_DATE)));
}
cursor.close();
db.close();

return note;
}

/**
* 查询所有
*
* @return
*/
public ArrayList<Note> findAll() {
SQLiteDatabase db = dbHelper.getReadableDatabase();
String sql = "select * from note";
Cursor cursor = db.rawQuery(sql,null);

ArrayList<Note> notes = new ArrayList<>();
Note note = null;
while (cursor.moveToNext()) {
note = new Note();

note.setId(cursor.getInt(cursor.getColumnIndexOrThrow(MetaData.NoteTable._ID)));
note.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.TITLE)));
note.setContent(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.CONTENT)));
note.setCreateDate(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.CREATE_DATE)));
note.setUpdateDate(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.UPDATE_DATE)));
notes.add(note);
}
cursor.close();
db.close();
return notes;
}

/**
* 分页查询
*
* @param limit 默认查询的数量
* @param skip 跳过的行数
* @return
*/
public ArrayList<Note> findLimit(int limit, int skip) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
String sql = "select * from note order by _id desc limit ? offset ?";
String[] strs = new String[]{String.valueOf(limit), String.valueOf(skip)};
Cursor cursor = db.rawQuery(sql,strs);

ArrayList<Note> notes = new ArrayList<>();
Note note = null;
while (cursor.moveToNext()) {
note = new Note();

note.setId(cursor.getInt(cursor.getColumnIndexOrThrow(MetaData.NoteTable._ID)));
note.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.TITLE)));
note.setContent(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.CONTENT)));
note.setCreateDate(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.CREATE_DATE)));
note.setUpdateDate(cursor.getString(cursor.getColumnIndexOrThrow(MetaData.NoteTable.UPDATE_DATE)));
notes.add(note);
}
cursor.close();
db.close();
return notes;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sqlite 数据库 Android