3

我正在开发一个 android 项目(Eclipse java - Emulator 5554 - SQLite)。

但我不知道如何导入或导出数据库。请先看下面的代码

代码段1:(此代码段在android设备按钮的onClick方法中)

    public void onClick(View v) 
    {               SQLiteDatabase db =  openOrCreateDatabase("EOS_DB_TRY_OUT", SQLiteDatabase.CREATE_IF_NECESSARY, null);

            DatabaseConnector dbConnector = new DatabaseConnector(getBaseContext(), DB_NAME, null,1);
            dbConnector.onCreate(db);

// private static String DB_PATH = "assets/database/eosdatabase.zip";
    //private static String DB_NAME = "eosdatabase.db";  these are global variables in //class...

    }

代码段 2:这是我尝试创建的另一个类(或使用现有的,如果存在)并连接

public class DatabaseConnector extends SQLiteOpenHelper {





public DatabaseConnector(Context context, String name,
        CursorFactory factory, int version) {
    super(context, name, factory, version);

}

@Override
public void onCreate(SQLiteDatabase db) {
    System.out.println("On create works");

            try {
                db.execSQL("DROP TABLE IF EXISTS actuator;");
                db.execSQL("CREATE TABLE IF NOT EXISTS actuator ("+
                        "ACTUATOR_ID INT NOT NULL,"+
                        "ACTUATOR_HW_ID int(11) DEFAULT NULL,"+
                        "DEVICE_NAME TEXT(45) DEFAULT NULL,"+
                        "DEVICE_TYPE TEXT(45) DEFAULT NULL,"+
                        "DEVICE_SUB_TYPE TEXT(45) DEFAULT NULL,"+
                        "LOCATION_ID INT(11) DEFAULT NULL,"+
                        "STATUES_VALUE REAL DEFAULT NULL,"+
                        "MAX_STATUES_VALUE REAL DEFAULT NULL,"+
                        "MIN_STATUES_VALUE REAL DEFAULT NULL,"+
                        "PRIMARY KEY (`ACTUATOR_ID`))");

                System.out.println("table created now values will be added");



            } catch (SQLException e) {

                System.out.println("table is not created");
            }

            try {

                db.execSQL("INSERT INTO actuator (ACTUATOR_ID, ACTUATOR_HW_ID, DEVICE_NAME, DEVICE_TYPE, DEVICE_SUB_TYPE, LOCATION_ID, STATUES_VALUE, MAX_STATUES_VALUE, MIN_STATUES_VALUE) " +
                        "VALUES (4,2, 'Heat Sensor FX615','Heat Sensor', 'Optic Heat Sensor', 4, 6, 7, 8) " );
                System.out.println("values are added");
            } catch (SQLiteException e) {

                e.printStackTrace();
                System.out.println("values are not added");
            }

            try 
            {
                Cursor c = db.rawQuery("SELECT LOCATION_ID FROM actuator WHERE ACTUATOR_ID = 4", null);
                if (c != null && c.moveToFirst()) 
                {


                        String berkay = c.getString(0);
                        System.out.println(berkay);

                }
                System.out.println("select finished");

            } 
            catch (SQLiteException e) {

                e.printStackTrace();
                System.out.println("not selected");
            }

事情是:

代码工作正常,语法正确,但我昨天在没有任何外部数据库的情况下工作,代码在执行时创建新数据库并在执行后删除它,因为我只是在测试语法。现在代码运行良好,但我不知道代码使用的是哪个数据库。

今天我通过 sqliteadmin 数据库浏览器创建一个数据库,我想在模拟器中使用它(不是创建新数据库并为每次执行删除它,我想要永久数据库)。我不明白这段代码,这段代码是否像我以前一样创建新的并删除它?如果是这样,我如何导入外部数据库并使用它?

注意:我要使用的数据库名称是“eosdatabase”,它的位置是 desktop/databasefolder/database/eosdatabase.zip/eosdatabase.s3db

注意2:将外部数据库导入模拟器数据库文件后,我如何连接该数据库(如果你解决了我的代码问题,我会很高兴不仅将数据库导入模拟器,我需要代码而不是上面的那个)

4

1 回答 1

0

用于将数据库从手机复制到本地系统。

转到 DDMS -> 文件资源管理器 -> 数据 -> 数据 -> 您的应用程序包名称 -> 数据库。在这里选择要导出到本地系统的数据库,然后转到窗口的右上角,您会找到导出按钮,单击该按钮它将询问目标位置,然后选择位置并按确定。

用于将数据库从本地系统复制到手机。

转到 DDMS -> 文件资源管理器 -> 数据 -> 数据 -> 您的应用程序包名称 -> 数据库。然后转到窗口的右上角,您会找到导入按钮,单击该按钮然后它会询问源位置浏览位置选择数据库然后按确定..

于 2013-04-12T09:20:06.527 回答