数据库增删改查的两种方式:
第一种:通过SQL语句实现
/**
* 联系人数据库表的访问类
*/
public class ContactInfoDao {
/**
* 数据库打开的帮助类
*/
private MyDBOpenHelper helper;
/**
* 在构造方法里面完成 必须要用的类的初始化
* @param context
*/
public ContactInfoDao(Context context) {
helper = new MyDBOpenHelper(context);
}
/**
* 添加一条记录
* @param name 联系人姓名
* @param phone 联系人电话
*/
public void add(String name, String phone){
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("insert into contactinfo (name,phone) values (?,?)", new Object[]{name,phone});
//记得释放数据库资源
db.close();
}
/**
* 根据姓名删除一条记录
* @param name 要删除的联系人的姓名
*/
public void delete(String name){
//判断这个数据是否存在.
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("delete from contactinfo where name=?", new Object[]{name});
db.close();
//再从数据库里面查询一遍,看name是否还在
}
/**
* 修改联系人电话号码
* @param newphone 新的电话号码
* @param name 要修改的联系人姓名
*/
public void update(String newphone , String name){
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("update contactinfo set phone =? where name=?", new Object[]{newphone,name});
db.close();
}
/**
* 查询联系人的电话号码
* @param name 要查询的联系人
* @return 电话号码
*/
public String getPhoneNumber(String name){
String phone = null;
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery("select phone from contactinfo where name=?", new String[]{name});
if(cursor.moveToNext()){//如果光标可以移动到下一位,代表就是查询到了数据
phone = cursor.getString(0);
}
cursor.close();//关闭掉游标,释放资源
db.close();//关闭数据库,释放资源
return phone;
}
}
第二种:
通过安卓中封装好的方法
ublic class ContactInfoDao {
//将打开数据库的帮助类声明成一个全局变量,因为在本来中用的比较频繁
private MyDBOpenHelper helper;
//在构造方法中对要用的对象进行实例化,避免重复使用时多次创建的麻烦
public ContactInfoDao(Context context){
//对必须要用的类进行初始化
helper = new MyDBOpenHelper(context);
}
/**
* 在数据库中添加一条记录,该方法是安卓中封装好的
* @param name 联系人的名字
* @param phone 联系人的联系方式
* @return 返回的是添加后在数据库的行号 -1代表添加失败
*/
//通过在xml布局文件中直接指定点击事件的方法名的方式完成添加的点击事件
public long add(String name,String phone ){
//通过帮助类拿到数据库
SQLiteDatabase db = helper.getWritableDatabase();
//创建一个使用默认初始大小的值空set集合
ContentValues values = new ContentValues();
//将名字和联系人联系方式存入set集合内
values.put("name", name);
values.put("phone", phone);
//内部是组拼SQL语句实现的,将联系人姓名和联系方式添加到数据库表中,通过源码查看,S是用StringBuilder来进行拼接
long rowid = db.insert("contactinfo", null, values);
db.close();//关闭数据库
return rowid;
}
/**
* 根据姓名删除一条记录
* @param name 要删除的联系人的姓名
* @return 返回0代表的是没有删除任何的记录 返回整数int值代表删除了几条数据
*/
public int delete(String name){
SQLiteDatabase db = helper.getWritableDatabase();
int rowconut = db.delete("contactinfo", "name=?", new String[]{name});
db.close();
return rowconut;
}
/**
* 修改联系人电话号码
* @param newphone 新的电话号码
* @param name 要修改的联系人姓名
* @return 0代表一行也没有更新成功, >0 整数代表的是更新了多少行记录
*/
public int update(String newphone,String name){
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("newphone", newphone);
int rowcount = db.update("contactinfo", values, "name=?", new String[]{name});
db.close();
return rowcount;
}
/**
* 查询联系人的电话号码
* @param name 要查询的联系人
* @return 电话号码
*/
public String getPhoneNumber(String name){
String phone=null;
SQLiteDatabase db = helper.getReadableDatabase();
//Cursor底层是一个set集合,set集合的特性是无序不重复
Cursor cursor = db.query("contactinfo", new String[]{"phone"}, "name=?", new String[]{name}, null, null, null);
if(cursor.moveToNext()){//如果光标可以移动到下一位,就代表查询到类数据
phone=cursor.getString(0);//光标拿到的脚标为0的字符串就为电话号码,因为这个集合中只存入了一个电话号码
}
cursor.close();//关闭游标,释放资源,相当于java中的流的flush()方法
db.close();
return phone;
}
}
第一种:通过SQL语句实现
/**
* 联系人数据库表的访问类
*/
public class ContactInfoDao {
/**
* 数据库打开的帮助类
*/
private MyDBOpenHelper helper;
/**
* 在构造方法里面完成 必须要用的类的初始化
* @param context
*/
public ContactInfoDao(Context context) {
helper = new MyDBOpenHelper(context);
}
/**
* 添加一条记录
* @param name 联系人姓名
* @param phone 联系人电话
*/
public void add(String name, String phone){
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("insert into contactinfo (name,phone) values (?,?)", new Object[]{name,phone});
//记得释放数据库资源
db.close();
}
/**
* 根据姓名删除一条记录
* @param name 要删除的联系人的姓名
*/
public void delete(String name){
//判断这个数据是否存在.
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("delete from contactinfo where name=?", new Object[]{name});
db.close();
//再从数据库里面查询一遍,看name是否还在
}
/**
* 修改联系人电话号码
* @param newphone 新的电话号码
* @param name 要修改的联系人姓名
*/
public void update(String newphone , String name){
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("update contactinfo set phone =? where name=?", new Object[]{newphone,name});
db.close();
}
/**
* 查询联系人的电话号码
* @param name 要查询的联系人
* @return 电话号码
*/
public String getPhoneNumber(String name){
String phone = null;
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery("select phone from contactinfo where name=?", new String[]{name});
if(cursor.moveToNext()){//如果光标可以移动到下一位,代表就是查询到了数据
phone = cursor.getString(0);
}
cursor.close();//关闭掉游标,释放资源
db.close();//关闭数据库,释放资源
return phone;
}
}
第二种:
通过安卓中封装好的方法
ublic class ContactInfoDao {
//将打开数据库的帮助类声明成一个全局变量,因为在本来中用的比较频繁
private MyDBOpenHelper helper;
//在构造方法中对要用的对象进行实例化,避免重复使用时多次创建的麻烦
public ContactInfoDao(Context context){
//对必须要用的类进行初始化
helper = new MyDBOpenHelper(context);
}
/**
* 在数据库中添加一条记录,该方法是安卓中封装好的
* @param name 联系人的名字
* @param phone 联系人的联系方式
* @return 返回的是添加后在数据库的行号 -1代表添加失败
*/
//通过在xml布局文件中直接指定点击事件的方法名的方式完成添加的点击事件
public long add(String name,String phone ){
//通过帮助类拿到数据库
SQLiteDatabase db = helper.getWritableDatabase();
//创建一个使用默认初始大小的值空set集合
ContentValues values = new ContentValues();
//将名字和联系人联系方式存入set集合内
values.put("name", name);
values.put("phone", phone);
//内部是组拼SQL语句实现的,将联系人姓名和联系方式添加到数据库表中,通过源码查看,S是用StringBuilder来进行拼接
long rowid = db.insert("contactinfo", null, values);
db.close();//关闭数据库
return rowid;
}
/**
* 根据姓名删除一条记录
* @param name 要删除的联系人的姓名
* @return 返回0代表的是没有删除任何的记录 返回整数int值代表删除了几条数据
*/
public int delete(String name){
SQLiteDatabase db = helper.getWritableDatabase();
int rowconut = db.delete("contactinfo", "name=?", new String[]{name});
db.close();
return rowconut;
}
/**
* 修改联系人电话号码
* @param newphone 新的电话号码
* @param name 要修改的联系人姓名
* @return 0代表一行也没有更新成功, >0 整数代表的是更新了多少行记录
*/
public int update(String newphone,String name){
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("newphone", newphone);
int rowcount = db.update("contactinfo", values, "name=?", new String[]{name});
db.close();
return rowcount;
}
/**
* 查询联系人的电话号码
* @param name 要查询的联系人
* @return 电话号码
*/
public String getPhoneNumber(String name){
String phone=null;
SQLiteDatabase db = helper.getReadableDatabase();
//Cursor底层是一个set集合,set集合的特性是无序不重复
Cursor cursor = db.query("contactinfo", new String[]{"phone"}, "name=?", new String[]{name}, null, null, null);
if(cursor.moveToNext()){//如果光标可以移动到下一位,就代表查询到类数据
phone=cursor.getString(0);//光标拿到的脚标为0的字符串就为电话号码,因为这个集合中只存入了一个电话号码
}
cursor.close();//关闭游标,释放资源,相当于java中的流的flush()方法
db.close();
return phone;
}
}