簡體   English   中英

如何在Android中保存數據庫?

[英]How to save database in Android?

我是android開發的新手,我正在嘗試制作一個簡單的應用程序,可以在其中添加和查看記錄。 我可以成功添加數據並在表中查看它們,每次運行程序時它都可以工作。 (我正在學習本教程 )但是每次我關閉Eclipse並嘗試添加新數據並查看它們時,我輸入的先前信息都消失了。 似乎當我關閉Eclipse時,它不會保存我的數據庫。 這是我關注的示例代碼。

package com.example.hotornot;

import java.sql.Statement;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Example {


public static final String KEY_ROWID = "id";
public static final String KEY_NAME = "name";
public static final String KEY_NUM = "number";

public static final String DATABASE_NAME = "dbTry";
public static final String DATABASE_TABLE = "tblSamp";
public static final int DATABASE_VERSION = 1;

public DbHelper ourhelper;
public final Context ourcontext;
public SQLiteDatabase ourdatabase;


 class DbHelper extends SQLiteOpenHelper{

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

    @Override
    public void onCreate(SQLiteDatabase arg0) {
        // TODO Auto-generated method stub
        arg0.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID + " INTEGER, " + KEY_NAME + " NULL, " + KEY_NUM + " NULL);");
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO Auto-generated method stub
        arg0.execSQL("DROP TABLE IF EXIST " + DATABASE_TABLE);
        onCreate(arg0);

    }

}

public Example(Context c)
{
    ourcontext = c;     
}

public Example open() throws SQLException
{
    ourhelper = new DbHelper(ourcontext);
    ourdatabase = ourhelper.getWritableDatabase();
    return this;
}

public void close()
    {
        ourhelper.close();
    }

public long createEntry(String name, String num)
{
    // TODO Auto-generated method stub

    ContentValues cv = new ContentValues();
    cv.put(KEY_NAME, name);
    cv.put(KEY_NUM, num);
    return ourdatabase.insert(DATABASE_TABLE, null, cv);        
}

public  String getData() 
{
    // TODO Auto-generated method stub

    String[] columns = new String[]{ KEY_ROWID,KEY_NAME, KEY_NUM};
    Cursor c = ourdatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
    String result = "";

    int iRow = c.getColumnIndex(KEY_ROWID);
    int iName = c.getColumnIndex(KEY_NAME);
    int iNum = c.getColumnIndex(KEY_NUM);


    for (c.moveToFirst(); ! c.isAfterLast(); c.moveToNext()){
    result = result + c.getString(iRow) + " " +c.getString(iName) + " " + c.getString(iNum) + "\n";

    }
    return result;
}
}

您必須覆蓋現有數據庫或卸載應用程序

請檢查您的代碼

在Activity onCreate事件上檢查是否存在db文件(如果存在)不要覆蓋並跳過該過程,您肯定會得到舊記錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM