当前位置:数据库 > SQLite >>

我的Android笔记(二)—— SQLite数据库的基本操作

SQLite是Android使用的轻量级的数据库,开发Android应用是对数据库的操作自然是必不可少。

Android提供了一个SQLiteOpenHelper类来可以很方便的操作数据库,


继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。
       onCreate: 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
       onUpgrade:当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。

 

下面是我写的一个SQLite基本操作的demo。

 

主要包含两个java类——

DBUtil类,继承自SQLiteOpenHelper,用以实现各种操作功能:


[java]
package barry.android.db; 
 
import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
 
public class DBUtil extends SQLiteOpenHelper { 
 
    private final static String DATABASE_NAME = "db2004"; 
    private final static int DATABASE_VERSION = 1; 
    private static final String TABLE_NAME ="students"; 
    private static final String FILED_1 = "name"; 
    private static final String FILED_2 = "password"; 
 
    public DBUtil(Context context){ 
        super(context, DATABASE_NAME,null,DATABASE_VERSION); 
        System.out.println("new DBUtil"); 
    } 
 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
        String sql = "CREATE TABLE "+TABLE_NAME+" ( "+FILED_1 +" TEXT, "+ FILED_2 +" TEXT );"; 
        db.execSQL(sql); 
        System.out.println("oncreate创建表"); 
    } 
 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); 
        System.out.println("onUpgrade删除表"); 
        this.onCreate(db); 
    } 
     
    /**
     * 查询表中所有的数据
     * @return
     */ 
    public Cursor select(){ 
        return this.getReadableDatabase() 
            .query(TABLE_NAME, null, null, null, null, null, null);      
    } 
 
    /**
     * 插入一条数据到表中
     * @param name 字段一的值
     * @param password 字段二的值
     */ 
    public void insert(String name ,String password){ 
        ContentValues cv = new ContentValues(); 
        cv.put(FILED_1, name); 
        cv.put(FILED_2, password);       
        this.getWritableDatabase().insert(TABLE_NAME, null, cv); 
        this.getWritableDatabase().close();//关闭数据库对象   
    }    
     
    /**
     * 删除表中的若干条数据
     * @param name 一个包含所有要删除数据的"name"字段的数组
     */ 
    public void delete(String[] name){ 
        String where = FILED_1+" = ?"; 
        String[] whereValues = name;  
        this.getWritableDatabase().delete(TABLE_NAME, where, whereValues); 
        this.getWritableDatabase().close(); 
    } 
     
    /**
     * 更新表中的数据(修改字段二"password")
     * @param name 要更新的数据"name"字段值
     * @param newPassword 新的"password"字段
     */ 
    public void update(String name,String newPassword){      
        ContentValues cv = new ContentValues(); 
        cv.put(FILED_2, newPassword);        
        String where =FILED_1+" = ?"; 
        String[] whereValues= {name};        
        this.getWritableDatabase().update(TABLE_NAME, cv, where, whereValues); 
        this.getWritableDatabase().close(); 
    }    
     
    /**
     * 清空表中的数据
     */ 
    public void clean (){ 
        this.getWritableDatabase().execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); 
        System.out.println("clean删除表"); 
        this.onCreate(this.getWritableDatabase()); 
        this.getWritableDatabase().close(); 
    } 

package barry.android.db;

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

public class DBUtil extends SQLiteOpenHelper {

 private final static String DATABASE_NAME = "db2004";
 private final static int DATABASE_VERSION = 1;
 private static final String TABLE_NAME ="students";
 private static final String FILED_1 = "name";
 private static final String FILED_2 = "password";

 public DBUtil(Context context){
  super(context, DATABASE_NAME,null,DATABASE_VERSION);
  System.out.println("new DBUtil");
 }

 @Override
 public void onCreate(SQLiteDatabase db) {
  String sql = "CREATE TABLE "+TABLE_NAME+" ( "+FILED_1 +" TEXT, "+ FILED_2 +" TEXT );";
  db.execSQL(sql);补充:移动开发 , Android ,

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,