我正在开发一个 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:将外部数据库导入模拟器数据库文件后,我如何连接该数据库(如果你解决了我的代码问题,我会很高兴不仅将数据库导入模拟器,我需要代码而不是上面的那个)