android应用程序里使用SQLite

一,创建一个数据库操作助手类DataBaseHelper,该类继承自SQLiteOpenHelper。
重点还是重写其 onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)两个方法。
代码如下:

public class DataBaseHelper extends SQLiteOpenHelper {
    private static final int VERSION=1;

    public DataBaseHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO 自动生成的构造函数存根
    }

    public DataBaseHelper(Context context, String name) {
        // TODO 自动生成的构造函数存根
        this(context,name, VERSION);
    }

    public DataBaseHelper(Context context, String name,int version) {
        // TODO 自动生成的构造函数存根
        this(context,name,null, VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        System.out.println("创建数据库");
        db.execSQL("create table t_user(id integer,nick_name nvarchar(50),name nvarchar(50),sex char(2),email nvarchar(50),primary key (id))");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println("更新数据库");


    }

}

二,如果android应用需要用户的注册与登陆,那么可以设计为在应用启动时,提示用户注册,这时可以在MainActivity里创建数据库,代码如下:

public class MainActivity extends FragmentActivity {
    private DataBaseHelper dbHelper;

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

        dbHelper=new DataBaseHelper(MainActivity.this,"pedometer.db");
        SQLiteDatabase sqlitedatabase = dbHelper.getWritableDatabase();
    }
}

以上这种方式创建的数据库在手机的内存卡里,如果没有root权限,是看不到的。因此,如果能把数据库创建在SD卡上,将会很方便。那么,想要在SD卡上创建数据库,首先要进行的工作是判断SD是否存在,有如下判断

if (!android.os.Environment.MEDIA_MOUNTED.equals(android.os.Environment
                .getExternalStorageState())) {

Toast.makeText(MainActivity.this, "请插入SD卡,谢谢合作!", 1000).show();
        } else {
        ……
        }

即判断android.os.Environment.MEDIA_MOUNTED常量(已经挂载并且拥有可读可写权限)是否等于android.os.Environment.getExternalStorageState();(该方法返回的是返回外部存储设备的当前状态),如果存在SD卡,则进行如下操作:

else {              spathDataBase=Environment.getExternalStorageDirectory().getPath()+File.separator+"UserData"+File.separator+MainActivity.class.getPackage().getName();

            File dataBaseFile=new File(pathDataBase);

            if(!dataBaseFile.exists()){
                dataBaseFile.mkdirs();
            }

            dataBaseName=pathDataBase+File.separator+"pedometer.db";

            dbHelper = new DataBaseHelper(MainActivity.this, dataBaseName);
            SQLiteDatabase sqlitedatabase = dbHelper.getWritableDatabase();
            Toast.makeText(MainActivity.this, "数据库创建成功", 1000).show();

这里在SD卡上创建数据库的时候,给路径就好了 。因为SQLiteOpenHelper类中构造方法会建立数据库 。

private DataBaseHelper dbHelper;
private String pathDataBase; //数据库文件的路径
private String dataBaseName; //数据库文件名

pathDataBase=Environment.getExternalStorageDirectory().getPath()+File.separator+”UserData”+File.separator+MainActivity.class.getPackage().getName();
以上得到的是数据库文件在SD卡上的完整路径,然后创建目录:

    File dataBaseFile=new File(pathDataBase);

            if(!dataBaseFile.exists()){
                dataBaseFile.mkdirs();
            }

在加上数据库文件的名:dataBaseName=pathDataBase+File.separator+”pedometer.db”;

最后调用DataBaseHelper的构造方法在SD卡上穿件数据库:

dbHelper = new DataBaseHelper(MainActivity.this, dataBaseName);
SQLiteDatabase sqlitedatabase = dbHelper.getWritableDatabase();
Toast.makeText(MainActivity.this, "数据库创建成功", 1000).show();

这时,数据库文件已经在SD卡上创建好了。

以下是自己做的Demo的完整代码:

DataBaseHelper类:

package com.pedometer.utils;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DataBaseHelper extends SQLiteOpenHelper {
    private static final int VERSION=1;
    public DataBaseHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO 自动生成的构造函数存根
    }

    public DataBaseHelper(Context context, String name) {
        // TODO 自动生成的构造函数存根
        this(context,name, VERSION);
    }

    public DataBaseHelper(Context context, String name,int version) {
        // TODO 自动生成的构造函数存根
        this(context,name,null, VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        System.out.println("创建数据库");
        db.execSQL("create table t_user(id integer,nick_name nvarchar(50),name nvarchar(50),sex char(2),email nvarchar(50),primary key (id))");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println("更新数据库");


    }

}

MainActivity :

package com.example.pedometer;

import java.io.File;

import com.pedometer.user.UserLoginFragment;
import com.pedometer.utils.DataBaseHelper;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends FragmentActivity {
    private DataBaseHelper dbHelper;
    private String pathDataBase;
    private String dataBaseName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (!(android.os.Environment.MEDIA_MOUNTED.equals(android.os.Environment
                .getExternalStorageState())))
        {
            Toast.makeText(MainActivity.this, "请插入SD卡,谢谢合作!", 0).show();
        } else {

            pathDataBase=Environment.getExternalStorageDirectory().getPath()+File.separator+"UserData"+File.separator+MainActivity.class.getPackage().getName();

            File dataBaseFile=new File(pathDataBase);

            if(!dataBaseFile.exists()){
                dataBaseFile.mkdirs();
            }

            dataBaseName=pathDataBase+File.separator+"pedometer.db";

            dbHelper = new DataBaseHelper(MainActivity.this, dataBaseName);
            SQLiteDatabase sqlitedatabase = dbHelper.getWritableDatabase();
            Toast.makeText(MainActivity.this, "数据库创建成功", 1000).show();

            FragmentManager fm = getSupportFragmentManager();
            Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);

            if (fragment == null) {
                fragment = new UserLoginFragment();
                fm.beginTransaction().add(R.id.fragmentContainer, fragment)
                        .commit();
            }
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值