Android SQLite数据库 SQLiteOpenHelper的操作使用

一.概况

SQLite是Android内置的一个很小的关系型数据库,Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大,SQLite具有独立性、轻量级、隔离性、安全性、跨平台、支持多种语言的优势,SQliteOpenHelper是一个抽象类,所以必须要实现以下的两个方法以及一个构造方法 

1.构造方法: 

public ClassName(Context context, String name, CursorFactory factory, int version) 

参数1:上下文对象(MainActivity.this)、

参数2:数据库的名称、

参数3:创建Cursor的工厂类,参数为了可以自定义Cursor创建(ps:一般为null)、

参数4:数据库的版本

2.两个回调函数:

onCreate(SQLiteDatabase db)该方法是当没有数据库存在才会执行

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)该方法是数据库存更新才会执行

3.实现代码如下:

public class MyDatabaseOpenHelper extends SQLiteOpenHelper {

    private static final String db_name = "mydata.db"; // 数据库名称
    private static final int version = 1; // 数据库版本
  
    public MyDatabaseOpenHelper(Context context) {
        super(context, db_name, null, version);
    }

    //该方法没有数据库存在才会执行
    public void onCreate(SQLiteDatabase db) {
     //没有数据库打印日记
        Log.i("Log","没有数据库,创建数据库");
     //建表语句
        String sql_message = "create table t_message (id int primary key,userName varchar(50),lastMessage varchar(50),datetime  varchar(50))";
        //执行建表语句
        db.execSQL(sql_message);
    }

    //数据库存更新才会执行
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      Log.i("updateLog","数据库更新了!");
  }
}

二.SQLiteDatabase类

1.Android提供了一个名为SQLiteDatabase的类,它封装了一些操作数据库的API,SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新,一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法

onCreate(SQLiteDatabase db)创建数据库时调用

onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)版本更新时调用

getReadableDatabase()创建或打开一个只读数据库

getWritableDatabase()创建或打开一个读写数据库

2.调用代码如下:

public class MainActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyDatabaseOpenHelper helper = new MyDatabaseOpenHelper(MainActivity.this);
        helper.getWritableDatabase().close();   
    }
}

3.SQLiteDatabase相关方法

getCount()总记录条数
isFirst()判断是否第一条记录
isLast()判断是否最后一条记录
moveToFirst()移动到第一条记录
moveToLast()移动到最后一条记录
move(int offset)移动[是指偏移量而不是指移到指定位置]
moveToNext()移动到吓一条记录
moveToPrevious()移动到上一条记录
getColumnIndex(String columnName)获得指定列索引的int类型值

三.测试SQL语句方法

运行以上代码后你会发现在data/data/database 目录下有个刚刚生成的mydata.db文件这就是我们的数据库文件

在我们的SDK目录下的platform-tools文件夹有个sqlite3.exe,打开我们的dos命令台运行它,输入sqlite3 数据库文件的绝对路径便可以打开该数据库进行增删查改的操作

(ps:没有SDK的,这里我提供一下百度云链接:http://pan.baidu.com/s/1o8m6hNc 密码:zom1)

原文地址:https://www.cnblogs.com/zhaoyucong/p/6113911.html