首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法升级数据库

无法升级数据库
EN

Stack Overflow用户
提问于 2012-09-07 19:31:38
回答 2查看 113关注 0票数 0

下面是我的数据库代码,我试图通过更改版本号来升级它,但当我运行该表时,并没有重新创建或更改...代码中有任何错误,请帮助

代码语言:javascript
复制
public class DBHelper extends SQLiteOpenHelper {
    public static final int db_version = 1;
    private static final String CL_CITY = null;
    public static final String COL_NAME = "pName";
    //private static final String TABLE_NAME = CL_CITY;
    public static String TAG = DBHelper.class.getName();
    public static String DB_PATH = "data/data/org.clock/database/";
    private static String STATUS= "STATUS";
    private static String dbName = "clock.db";
    private static final String STRING_ALTER = "ALTER TABLE "+CL_CITY+" ADD "+STATUS+" STATUS";


    protected SQLiteDatabase dataBase;
    protected Context context;
    //private Context context;
    private static SQLiteDatabase checkDB = null;
    public DBHelper(Context context, String dbName) {
        super(context, dbName, null, 34);
        //this.dbName = dbName;
        this.context = context;
    }

    public void createDb() throws IOException {
        boolean dbExist = checkDataBase();
        Log.d(TAG, "DBChecking............ dbExist : " + dbExist);
        if (!dbExist) {
            this.getReadableDatabase();
            try {
                copyDataBase();
            } catch (IOException e) {
                Log.d(TAG, "Error cloneing database" + e);
            }
        }
    }

    private boolean checkDataBase() {

        try {
            if(checkDB == null){
                String path = DB_PATH + dbName;
                Log.d(TAG, "checkDataBase path=" + path);
                checkDB = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
            }
        } catch (SQLiteException e) {
            Log.e(TAG, "DBChecking............ ", e);
        }
        /*if (checkDB != null) {
            checkDB.close();
        }*/
        return checkDB != null ? true : false;
    }

    private void copyDataBase() throws IOException {
        Log.i(TAG, "copyDataBase database...");
        File file = new File(DB_PATH);
        Log.i(TAG, "cloneDataBase file=" + file);
        file.mkdirs();
        InputStream dbInput = context.getAssets().open(dbName);
        String outPutFile = DB_PATH + dbName;
        Log.i(TAG, "copyDataBase outPutFile=" + outPutFile);
        OutputStream dbOutPut = new FileOutputStream(outPutFile);
        byte[] buffer = new byte[1024];
        Log.i(TAG, "copyDataBase buffer=" + buffer);
        int length;
        while ((length = dbInput.read(buffer)) > 0) {
            dbOutPut.write(buffer, 0, length);
        }
        dbOutPut.flush();
        dbOutPut.close();
        dbInput.close();
    }

    public void openDb() throws SQLException {
        String dbPath = DB_PATH + dbName;
        dataBase = SQLiteDatabase.openDatabase(dbPath, null,
                SQLiteDatabase.OPEN_READWRITE);
    }

    @Override
    public synchronized void close() {
        if (dataBase != null)
            dataBase.close();
        super.close();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

if (newVersion > oldVersion){

    //db.execSQL("CREATE TABLE "+"staff"+" (_id INTEGER PRIMARY KEY AUTOINCREMENT, "
          // +COL_NAME+" TEXT);");

           db.execSQL("STRING_ALTER ");

    }
    }}
EN

回答 2

Stack Overflow用户

发布于 2012-09-07 19:34:29

db.execSQL("STRING_ALTER ");更改为db.execSQL(STRING_ALTER);

还要检查alter sql命令。这看起来很不对劲。

票数 4
EN

Stack Overflow用户

发布于 2012-09-08 19:02:15

我注意到您使用了错误的数据库路径:

代码语言:javascript
复制
public static String DB_PATH = "data/data/org.clock/database/";

这应该是:

代码语言:javascript
复制
public static String DB_PATH = "data/data/org.clock/databases/";

(数据库/ ==>数据库/)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12317280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档