zoukankan      html  css  js  c++  java
  • [android] android下创建一个sqlite数据库

    Sqlite数据库是开源的c语言写的数据库,androidiphone都使用的这个,首先需要创建数据库,然后创建表和字段,android提供了一个apiSQLiteOpenHelper数据库的打开和创建类。

    具体使用比如:创建一个classPersonSQLiteOpenHelper用户数据库类,继承SQLiteOpenHelper,父类是个抽象类要实现onCreate()onUpgrate()方法,此时会报错要求创建构造方法,构造方法的参数:Context上下文作用是告诉程序数据库创建在哪个目录下,String name数据库文件的名字,factory游标工厂一般我们都写null系统默认的,version数据库的版本从1开始,构造方法完成数据库就可以被创建。

    OnCreate(SQLiteDatabase db)方法是数据库第一次被创建时回掉,用来创建表以及初始化参数,参数就是我们创建的数据库。调用SQLiteDatabase对象的execSQL()方法执行sql语句,首先要创建表和mysql的基本一样,执行这条sql语句,create table person (id integer primary key autoincrement,name  varchar(20) not null default “” ) varchar的数字实际没有意义,给程序员看的,超过了也无所谓。

    new出来helper对象的时候,数据库并不会被创建,只有当helper对象调用了getWritableDatabase()方法或者getReadableDatabase()时候才会被创建。使用测试用例来测试一下,但是helper类需要上下文对象,测试框架提供了一个方法叫getContext()来得到上下文对象,数据库文件的地址/data/data/包名/database/下面,是私有的权限

    helper代码:

    package com.tsh.database;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {
        /**
         * 构造方法
         * @param context
         */
        public PersonSQLiteOpenHelper(Context context) {
            super(context, "person.db", null, 1);
        }
        /**
         * 数据库第一次创建完成的回调
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
            String sql="create table person (id integer primary key autoincrement,name varchar(10) not null default '')";
            db.execSQL(sql);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
    
        }
    
    }

    测试用例:

    package com.tsh.database.test;
    
    import com.tsh.database.PersonSQLiteOpenHelper;
    
    import android.test.AndroidTestCase;
    
    public class TestPersonDb extends AndroidTestCase {
        public void testPerson() throws Exception{
            PersonSQLiteOpenHelper helper =new PersonSQLiteOpenHelper(getContext());
            helper.getWritableDatabase();
        }
    }
  • 相关阅读:
    半年时间
    deep learning书的阅读
    wgan pytorch,pyvision, py-faster-rcnn等的安装使用
    caffe新版本的各种软件
    你会允许自己家孩子一直不停跟人要东西吗?
    sup inf max min
    leangoo大讲堂—北京站
    使用Leangoo玩转故事地图
    Leangoo:用敏捷开发管理思维做团队协作的SaaS软件
    张江男的逆袭,我如何使用leangoo提升团队效率
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5252008.html
Copyright © 2011-2022 走看看