Android 数据库详解

本文详细介绍如何使用SQLiteOpenHelper创建数据库及表,并通过SQLiteDb类进行数据的增删改查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建一个类继承SQLiteOpenHelper,覆盖构造方法,实现两个未实现方法

public class SQLiteHelper extends SQLiteOpenHelper{

public SQLiteHelper(Context context) {
super(context, "sql.db", null, 1); 
}

@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table if not exist "+"表名"+"_id integer primary key autoincrement, name text not null)";
db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}


二、创建一个db类,操作数据库

public class SQLiteDb{
private Context context;
private SQLiteHelper helper;
public SQLiteDb(Context context){
this.context = context;
helper = new SQLiteHelper(context);
}

public  void insertName(ContentValues values){
SQLiteDatabase sdb = getWritableDatabase();
sdb.insert("表名", null, values);
sdb.close();
}

public Cursor query(){
SQLiteDatabase sdb = getWritableDatabase();
// String[] columns, String selection, String[] selectionArgs, String groupBy, 
//String having, String orderBy, String limit
// sdb.query("表名", columns, selection, selectionArgs, groupBy, having, orderBy, limit);
String sql ="select * from "+"表名";
Cursor cursor = sdb.rawQuery(sql, null);
sdb.close();
return cursor;
}

public Cursor queryByName(String name){
SQLiteDatabase sdb = getWritableDatabase();
String sql  = "select from 表名 where name=?";
Cursor rawQuery = sdb.rawQuery(sql, new String[]{name});
sdb.close();
return rawQuery;
}

public void update(ContentValues values,String whereClause, String [] whereArgs){
SQLiteDatabase sdb = getWritableDatabase();
sdb.update("表名", values, whereClause, whereArgs);
sdb.close();
}

public void delete(String whereClause, String [] whereArgs){
SQLiteDatabase sdb = getWritableDatabase();
sdb.delete("表名", whereClause, whereArgs);
sdb.close();
}

}
}


三、操作数据库代码详解

1、插入数据

插入数据有两种方法:

①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,参数一是表名称,参数二是空列的默认值,参数三是ContentValues类型的一个封装了列名称和列值的Map;

②编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行

第一种方法的代码:

[java]  view plain  copy
  1. private void insert(SQLiteDatabase db) {    
  2.     //实例化常量值   
  3.     ContentValues cValue = new ContentValues();    
  4.     //添加用户名   
  5.     cValue.put("sname","xiaoming");    
  6.       //添加密码   
  7.     cValue.put("snumber","01005");    
  8.     //调用insert()方法插入数据   
  9.     db.insert("stu_table",null,cValue);    
  10.           }  
第二种方法的代码:

[java]  view plain  copy
  1. private void insert(SQLiteDatabase db){     
  2.      //插入数据SQL语句   
  3.      String stu_sql="insert into stu_table(sname,snumber) values('xiaoming','01005')";       
  4.     //执行SQL语句   
  5.      db.execSQL(sql);    

2、删除数据

删除数据也有两种方法:

①调用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法,参数一是表名称,参数二是删除条件,参数三是删除条件值数组;

②编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。

第一种方法的代码:

[java]  view plain  copy
  1. private void delete(SQLiteDatabase db) {    
  2.    //删除条件   
  3.    String whereClause = "_id=?";       
  4.   //删除条件参数   
  5.    String[] whereArgs = {String.valueOf(2)};     
  6.    //执行删除   
  7.    db.delete("stu_table",whereClause,whereArgs);     
  8. }    

第二种方法的代码:

[java]  view plain  copy
  1. private void delete(SQLiteDatabase db) {       
  2.    //删除SQL语句   
  3.    String sql = "delete from stu_table where _id  = 6";       
  4.    //执行SQL语句   
  5.    db.execSQL(sql);    
  6. }  

3、修改数据

修改数据有两种方法:

①调用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法。参数是表名称,参数是更行列ContentValues类型的键值对(Map),参数是更新条件(where字句),参数是更新条件数组。

②编写更新的SQL语句,调用SQLiteDatabase的execSQL执行更新。

第一种方法的代码:

[java]  view plain  copy
  1. private void update(SQLiteDatabase db) {    
  2.     //实例化内容值   
  3.     ContentValues values = new ContentValues();       
  4.     //在values中添加内容    
  5.     values.put("snumber","101003");       
  6.     //修改条件    
  7.     String whereClause = "id=?";       
  8.     //修改添加参数   
  9.     String[] whereArgs={String.valuesOf(1)};       
  10.     //修改   
  11.     db.update("usertable",values,whereClause,whereArgs);     
  12. }   

第二种方法的代码:

[java]  view plain  copy
  1. private void update(SQLiteDatabase db){       
  2.     //修改SQL语句   
  3.     String sql = "update stu_table set snumber = 654321 where id = 1";     
  4.     //执行SQL   
  5.     db.execSQL(sql);     
  6. }  

4、查询数据


文章开头的db工具类中查询代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值