我是android的初学者。我开发了一个测验应用程序。我创建的数据库在模拟器中运行良好,在此站点上搜索后,我知道它存储在数据/包名称/数据库位置。当我连接设备并将其用作模拟器时,它不会访问数据库。它显示一个空数据库。我搜索了该站点,并从评价很高的问题中找到了将数据库文件移动到设备的 sdcard 的问题,因此我使用了以下代码:
public class DatabaseFile extends SQLiteOpenHelper {
public static final String DATABASE_NAME="Quiz.db";
public static final String QUES="ques";
public static final String OP1="op1";
public static final String OP2="op2";
public static final String OP3="op3";
public static final String ANS="ans";
public static final String NAME="name";
public static final String CANS="cans";
public static final String SCORE="score";
public DatabaseFile(Context context)
{
super(context, DATABASE_NAME, null, 1);
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath ="/data/com.example.quizproject.StartQuiz/databases/Quiz.db";
String backupDBPath = "/backup/"+"Quiz.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
} else {
String TAG = null;
Log.e(TAG, "File does not exist: " + currentDBPath);
}
}
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
}
}
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE quiztable (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"ques TEXT, op1 TEXT, op2 TEXT, op3 TEXT, ans TEXT);");
}
private Context getBaseContext() {
// TODO Auto-generated method stub
return null;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
我还在清单文件中添加了在 sdcard 上写入的权限。上面的代码对我不起作用。它仍然显示一个空数据库,并且数据库的副本也没有在 sdcard 中创建。作为附加信息,我正在使用模拟器访问数据库
DatabaseFile dbfile;
SQLiteDatabase sqldb;
dbfile=new DatabaseFile(this);
sqldb=dbfile.getWritableDatabase();
当我将应用程序连接到真实设备时,代码是否会保持不变????我连接的设备是 Galaxy y。
plzzz帮助我.....我已经到处搜索了bt找不到任何解决方案哪里出错了???为什么数据库文件没有传输到 sdcard?