如何将SQLite数据库(SQLite Firefox扩展)连接到Android应用程序,以便Android 2.1查询并插入数据库

时间:2011-02-15 08:00:21

标签: android sqlite

我正在开发一个Android应用程序,用户应该输入一些功能:注册,查找医院位置,搜索邮件(通过短信发送给注册用户),并可以安排和预约。

到目前为止,所有活动都已完成。但是,我需要知道如何连接到数据库以读取和存储此数据。我使用的是Android 2.1,Mac OS X和SQLite Firefox扩展程序。

这是我必须连接到SQLite数据库的代码,我做错了什么?

package com.bitnuts.imom;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

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

public class DbManager extends SQLiteOpenHelper {

    private static final String DB_NAME = "iMom.sqlite";
    private static final String DB_PATH = "/data/data/com.bitnuts.imom/databases/";
    private static final Integer DB_VERSION = 1;
    private static final String TAG = "DbManager";
    private final Context context;
    private SQLiteDatabase db;
    private DbManager dbManager;

    public DbManager(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.context = context;
    }

    public DbManager open() {
        dbManager = new DbManager(context);
        db = dbManager.getWritableDatabase();
        return this;
    }

    @Override
    public void onCreate(SQLiteDatabase arg0) {

        createNewDatabase();
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

        // TODO Auto-generated method stub
    }

    public void createNewDatabase() {
        InputStream assetsDB = null;
        try {
            assetsDB = context.getAssets().open(DB_NAME);
            OutputStream dbOut = new FileOutputStream(DB_PATH + DB_NAME);

            byte[] buffer = new byte[1024];
            int length;
            while ((length = assetsDB.read(buffer)) > 0) {
                dbOut.write(buffer, 0, length);
            }

            dbOut.flush();
            dbOut.close();
            assetsDB.close();
        }
        catch (IOException e) {
        }
    }
}

3 个答案:

答案 0 :(得分:2)

Android上没有JDBC驱动程序,因此您无法连接到网络上的数据库(SQLite或其他): Android - Access to online Database SQlite

Android附带一个嵌入式SQLite数据库,但只能在设备中使用。

另请阅读why direct connection to databases from mobile devices is not recommended

如果您需要在网络上存储/共享某些数据,那么通常的方法是在服务器上创建所有设备都可以连接的Web服务。一种非常流行的Web服务类型是REST,它是Java中的quite easy to set up

答案 1 :(得分:2)

您无法在应用程序中直接使用SQLite数据库。你需要做一些修改。例如android_metadata表格等。博客帖子 Using your own SQLite database in Android applications 会对您有所帮助。

答案 2 :(得分:0)

我建议使用ORMLite for Android。使用它可以简化实现。这是getting started documentation