使用sqlitedatabase测验应用程序

时间:2016-10-22 05:58:54

标签: android sqlite android-studio android-sqlite

我想创建一个Android测验app.It包含大约200个问题。我想知道我应该如何插入问题。通过java代码(我将创建数据库并插入问题)或直接导入数据库(其中我已经创造了)。

2 个答案:

答案 0 :(得分:0)

如果您已经有db文件,则可以使用此示例访问它

public class Databasehelper extends SQLiteOpenHelper
{
  private SQLiteDatabase myDataBase;
  private final Context myContext;
  private static final String DATABASE_NAME = "db.sqlite";
  public final static String DATABASE_PATH ="/data/data/com.shir60bhushan/databases/";
  public static final int DATABASE_VERSION = 1;
  //public static final int DATABASE_VERSION_old = 1;

  //Constructor
  public Databasehelper(Context context)
  {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.myContext = context;
  }

  //Create a empty database on the system
  public void createDatabase() throws IOException
  {
        boolean dbExist = checkDataBase();

        if(dbExist)
        {
              Log.v("DB Exists", "db exists");
              // By calling this method here onUpgrade will be called on a
              // writeable database, but only if the version number has been
              // bumped
              //onUpgrade(myDataBase, DATABASE_VERSION_old, DATABASE_VERSION);
        }

        boolean dbExist1 = checkDataBase();
        if(!dbExist1)
        {
              this.getReadableDatabase();
              try
              {
                    this.close();    
                    copyDataBase();
              }
              catch (IOException e)
              {
                    throw new Error("Error copying database");
           }
        }
  }

  //Check database already exist or not
  private boolean checkDataBase()
  {
        boolean checkDB = false;
        try
        {
              String myPath = DATABASE_PATH + DATABASE_NAME;
              File dbfile = new File(myPath);
              checkDB = dbfile.exists();
        }
        catch(SQLiteException e)
        {
        }
        return checkDB;
  }

  //Copies your database from your local assets-folder to the just created empty database in the system folder
  private void copyDataBase() throws IOException
  {
        String outFileName = DATABASE_PATH + DATABASE_NAME;
        OutputStream myOutput = new FileOutputStream(outFileName);
        InputStream myInput = myContext.getAssets().open(DATABASE_NAME);

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

  //delete database
  public void db_delete()
  {
        File file = new File(DATABASE_PATH + DATABASE_NAME);
        if(file.exists())
        {
              file.delete();
              System.out.println("delete database file.");
        }
  }

  //Open database
  public void openDatabase() throws SQLException
  {
        String myPath = DATABASE_PATH + DATABASE_NAME;
        myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
  }

  public synchronized void closeDataBase()throws SQLException
  {
        if(myDataBase != null)
              myDataBase.close();
        super.close();
  }

  public void onCreate(SQLiteDatabase db)
  {
  }

  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
  {    
        if (newVersion > oldVersion)
        {
              Log.v("Database Upgrade", "Database version higher than old.");
              db_delete();
        }
  }

//add your public methods for insert, get, delete and update data in database.
 }

答案 1 :(得分:0)

您可以使用以下库

  

编译'com.readystatesoftware.sqliteasset:sqliteassethelper:+'

并将已创建的数据库放入

  

资产/数据库/ northwind.db

此目录并执行此操作

public class MyDatabase extends SQLiteAssetHelper {

    private static final String DATABASE_NAME = "northwind.db";
    private static final int DATABASE_VERSION = 1;

    public MyDatabase(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
}