package com.example.sqlitespecails.dao;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.sqlitespecails.SQLiteUserDBOpenHelper;
public class UserDao {
private static final String TABLE_NAME = "user";
private SQLiteDatabase db;
public UserDao(Context context){
SQLiteUserDBOpenHelper helper = new SQLiteUserDBOpenHelper(context);
db = helper.getWritableDatabase();
}
/**
* 使用特殊的方式添加一条数据记录
* @param name
* @param phone
* @return
*/
public boolean add(String name,String phone){
/**
* table : 表名
* nullColumnHack : 指定某一个字段是可填可不填 (选填) 并没有什么乱用
* values : ContentValues 类似Map map key-value
* ContentValues : key: 相当于某张表中的列名 value : 值
*
*/
ContentValues values = new ContentValues();
values.put("name", name);
values.put("phone", phone);
long result = db.insert(TABLE_NAME, null, values);
if(result != -1){
return true;
}else{
return false;
}
}
/**
* 使用特殊方式修改一条数据记录
* @param id 修改用户的id
*/
public boolean update(String name,int id){
/**
* table : 表名
* values : 指定你要修改的列值
* whereClause : 修改的条件
* whereArgs : 修改的条件值
*/
ContentValues values = new ContentValues();
values.put("name", name);
int result = db.update(TABLE_NAME, values, "_id = ?", new String[]{String.valueOf(id)});
if(result > 0){
return true;
}else{
return false;
}
}
/**
* 使用特殊方式删除一条数据记录
* @param id 删除的用户id
* @return
*/
public boolean delete(int id){
/**
* table : 表名
* whereClause : 删除条件
* whereArgs : 删除的条件值
*/
int result = db.delete(TABLE_NAME, "_id = ?", new String[]{String.valueOf(id)});
if(result > 0){
return true;
}else{
return false;
}
}
/**
* 使用特殊的方式查询所有的数据
* @return
*/
public String findAll(){
/**
* distinct : true 去除重复数据 false 不去除重复数据 默认情况下,false
* table : 表名
* columns : 指定你要查询的列 例如:name,phone 指定多列,列之间用逗号隔开
* 想要查询表中所有列的信息,填:null
*
* selection : 查询的条件
*
* selectionArgs : 查询的条件值
*
* groupBy : 分组查询
*
* having : 子条件查询语句
*
*
* orderBy : 是否排序 升序/降序 1->2->3 3->2->1
*
*
* limit : 分页查询
*
*/
try {
Cursor cursor = db.query(false, "user", null, null,
null,null, null, null, null);
//创建一个容器
StringBuffer sb = new StringBuffer();
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
//添加到容器
sb.append("姓名 : "+name+" 电话 : "+phone+"\n");
}
//关闭游标
closeCursor(cursor);
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 使用特殊方式进行条件查询
* @param id 查询的用户id
* @return
*/
public String findOption(int id){
Cursor cursor = db.query(TABLE_NAME, null, "_id = ?", new String[]{String.valueOf(id)}, null, null, null);
String result = "";
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
result = "姓名 : "+name+" 电话 : "+phone;
}
//关闭游标
closeCursor(cursor);
return result;
}
/**
* 关闭游标
* @param cursor 指定你要关闭的游标
*/
public void closeCursor(Cursor cursor){
//判断游标是否关闭
if(!cursor.isClosed()){
cursor.close();
}
}
/**
* 关闭数据库
*/
public void closeDB(){
//判断当前数据库是否已经关闭
if(db.isOpen()){
//关闭数据库释放资源
db.close();
}
}
}
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.sqlitespecails.SQLiteUserDBOpenHelper;
public class UserDao {
private static final String TABLE_NAME = "user";
private SQLiteDatabase db;
public UserDao(Context context){
SQLiteUserDBOpenHelper helper = new SQLiteUserDBOpenHelper(context);
db = helper.getWritableDatabase();
}
/**
* 使用特殊的方式添加一条数据记录
* @param name
* @param phone
* @return
*/
public boolean add(String name,String phone){
/**
* table : 表名
* nullColumnHack : 指定某一个字段是可填可不填 (选填) 并没有什么乱用
* values : ContentValues 类似Map map key-value
* ContentValues : key: 相当于某张表中的列名 value : 值
*
*/
ContentValues values = new ContentValues();
values.put("name", name);
values.put("phone", phone);
long result = db.insert(TABLE_NAME, null, values);
if(result != -1){
return true;
}else{
return false;
}
}
/**
* 使用特殊方式修改一条数据记录
* @param id 修改用户的id
*/
public boolean update(String name,int id){
/**
* table : 表名
* values : 指定你要修改的列值
* whereClause : 修改的条件
* whereArgs : 修改的条件值
*/
ContentValues values = new ContentValues();
values.put("name", name);
int result = db.update(TABLE_NAME, values, "_id = ?", new String[]{String.valueOf(id)});
if(result > 0){
return true;
}else{
return false;
}
}
/**
* 使用特殊方式删除一条数据记录
* @param id 删除的用户id
* @return
*/
public boolean delete(int id){
/**
* table : 表名
* whereClause : 删除条件
* whereArgs : 删除的条件值
*/
int result = db.delete(TABLE_NAME, "_id = ?", new String[]{String.valueOf(id)});
if(result > 0){
return true;
}else{
return false;
}
}
/**
* 使用特殊的方式查询所有的数据
* @return
*/
public String findAll(){
/**
* distinct : true 去除重复数据 false 不去除重复数据 默认情况下,false
* table : 表名
* columns : 指定你要查询的列 例如:name,phone 指定多列,列之间用逗号隔开
* 想要查询表中所有列的信息,填:null
*
* selection : 查询的条件
*
* selectionArgs : 查询的条件值
*
* groupBy : 分组查询
*
* having : 子条件查询语句
*
*
* orderBy : 是否排序 升序/降序 1->2->3 3->2->1
*
*
* limit : 分页查询
*
*/
try {
Cursor cursor = db.query(false, "user", null, null,
null,null, null, null, null);
//创建一个容器
StringBuffer sb = new StringBuffer();
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
//添加到容器
sb.append("姓名 : "+name+" 电话 : "+phone+"\n");
}
//关闭游标
closeCursor(cursor);
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 使用特殊方式进行条件查询
* @param id 查询的用户id
* @return
*/
public String findOption(int id){
Cursor cursor = db.query(TABLE_NAME, null, "_id = ?", new String[]{String.valueOf(id)}, null, null, null);
String result = "";
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
result = "姓名 : "+name+" 电话 : "+phone;
}
//关闭游标
closeCursor(cursor);
return result;
}
/**
* 关闭游标
* @param cursor 指定你要关闭的游标
*/
public void closeCursor(Cursor cursor){
//判断游标是否关闭
if(!cursor.isClosed()){
cursor.close();
}
}
/**
* 关闭数据库
*/
public void closeDB(){
//判断当前数据库是否已经关闭
if(db.isOpen()){
//关闭数据库释放资源
db.close();
}
}
}