Android SQLite数据库使用的小总结

文章纯属自己做笔记,可能调理会有点乱。。。

要使用数据库当然首先我们要创建这个数据库,一般来说我们使用SQLiteOpenHelper来帮助我们创建数据库。

从官网介绍:

SQLiteOpenHelper A helper class to manage database creation and version management. 

也可以看出它主要是来创建数据库库和进行版本管理的。

public class MyDateBaseHelper extends SQLiteOpenHelper {

    public MyDateBaseHelper(Context context, String name,
                            SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table table1(_id integer primary key autoincrement," +
                "COLUMN1,COLUMN2)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println("更新" + oldVersion + "to" + newVersion);
    }

}

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

        MyDateBaseHelper mMyDateBaseHelp = new MyDateBaseHelper(this, "database1.db3", null, 1);
        SQLiteDatabase sqLiteDatabase = mMyDateBaseHelp.getReadableDatabase();

    }


通过上面两段代码我们就创建了个名为database1,并且含有一张名为table1的表,该表含有两列,列名分别为COLUMN1,COLUMN2的SQLite数据库了。


顺便说下getWritableDatabase()和getReadableDatabase()的区别,其实只要数据库磁盘空间不满(查了下好像在理论上,一个数据库文件可以有2TB,没去具体求证。。),它俩是一样的,都是以读写方式打开数据库,满了后,用getWritableDatabase()打开会出错,getReadableDatabase()会变成只读方式打开。


眼见为实,我们可以通过Root Explorer去看下我们创建的数据库,如下图所示(查看路径图上也有):


下面我们可以通过下面这条语句向表table1中增加些数据:

sqLiteDatabase.execSQL("insert into table1 values(null,?,?)",new Integer[]{1,2});

我们可以通过SQLite Editor查看到增加的数据,如下图

其他SQL语句我就不一一展开说了,大家可以参考下这篇博客:

http://keeponmoving.iteye.com/blog/1487773


大家如果想把自己数据库中的数据导出的话,推荐OpenCSV,可以把数据导出成.csv格式,我的是opencsv-1.7,下面是我写的一个导出数据的类:

public class ExportData {

    private SQLiteDatabase mSQLiteDatabase;
    private File file;

    ExportData(SQLiteDatabase sqLiteDatabase) {
        mSQLiteDatabase = sqLiteDatabase;
    }

    public void exportDatabaseToCSV() {
        //导出数据保存的文件夹
        File exportDir = new File(Environment.getExternalStorageDirectory().getPath(),
                "/zhanExportData");

        if (!exportDir.exists()) {
            System.out.println(exportDir.mkdir());
        }

        //导出数据的文件名
        file = new File(exportDir, "myData.csv");

        try {
            CSVWriter csvWriter = new CSVWriter(new FileWriter(file));
            Cursor cursor = mSQLiteDatabase.rawQuery(
                    "select * from table1", null
            );

            while (cursor.moveToNext()) {
                //可以在这里增加数据库中数据的列数
                String string[] = {cursor.getString(0), cursor.getString(1),
                        cursor.getString(2)};
                csvWriter.writeNext(string);
            }
            csvWriter.close();
            cursor.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String getFilePath() {
        return file.getPath();
    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值