gpt4 book ai didi

SD卡中的android SQLite数据库

转载 作者:太空狗 更新时间:2023-10-29 16:06:07 24 4
gpt4 key购买 nike

我想知道android sqlite 中的一件事。

我在 sdcard 中创建了我的数据库。所以没有 `upgrage() 方法。

public class DatabaseClass
{
public static final String DATABASE_FILE_PATH = "/sdcard";
public static final String DATABASE_NAME = "testDatabase";

public static final String TRACKS_TABLE_CREATE =
"create table if not exists casecategory (_id INTEGER primary key autoincrement, "
+ "category_name TEXT not null);";

public SQLiteDatabase database;

public DatabaseClass()
{
try
{
database = SQLiteDatabase.openOrCreateDatabase(DATABASE_FILE_PATH + File.separator + DATABASE_NAME, null);
createTables();
}

catch (SQLiteException ex)
{
Log.e("Hello", "error -- " + ex.getMessage(), ex);
}
finally
{
database.close();
}
}

在内部存储器中,我们创建如下:-

public class DatabaseClass extends SQLiteOpenHelper 
{
/*Constants */
public final static String DATABASE_NAME ="localdbfile.db";
public final static String NAME ="name";
public final static String ADDRESS ="address";


public final static String CITY ="city";

public DatabaseClass(Context context) {
super(context, DATABASE_NAME, null, 1);
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL( "CREATE TABLE mylistdata(_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT, address TEXT,city TEXT);");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP Table mylistdata");
onCreate(db);

}

}

在内部存储器中,我们更改了version 编号并调用了upgrade()。升级数据库。

如果我想升级 sdcard 数据库中的数据库版本。

如果可能,我该怎么做。

最佳答案

您可以像这样将数据库直接存储在 SD 卡中:

static class DatabaseClass extends SQLiteOpenHelper {

DatabaseClass(final Context context) {
super(context, Environment.getExternalStorageDirectory()
+ File.separator + "/DataBase/" + File.separator
+ DATABASE_NAME, null, DATABASE_VERSION);
}

如果您将数据库存储在内存中,那么您也可以将数据库从内存复制到 SD 卡:)

以下是如何将数据复制到 SD 卡的示例:

InputStream myInput = new FileInputStream("/data/data/pack_name/databases/databasename.db");

File directory = new File("/sdcard/some_folder");
if (!directory.exists()) {
directory.mkdirs();
}

OutputStream myOutput = new FileOutputStream(directory.getPath() + "/AppName.backup");

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

myOutput.flush();
myOutput.close();
myInput.close();

关于SD卡中的android SQLite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com