SD卡中的android SQLite数据库

标签 android sqlite

我想知道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/

相关文章:

Java/Android 偏向数字生成器

java - 如何访问 JSONObject、JSONObject 和 JSONArray 中的内容? Java/安卓

android - 在 Android 中使用 SQLite 将 DISTINCT 关键字添加到 query()

sqlite - 如何在 flutter moor 中为双值创建列

c++ - push_back on 2D std::vector< std::vector<char*>> value made all the values are the same

android - 从 Android 服务中打开数据库连接时出错

java - ImageButton 的边界

android - Google Maps Android API - 样式化 map

java - Android SQLite CREATE TABLE 语法错误

java - 一个 Android 应用程序、一个启动 View 、两个图标