2016-10-22 22 views
-3

我想創建一個android測驗應用程序。它包含大約200個問題。我想知道如何插入問題。通過java代碼(我將創建數據庫並插入問題)或直接導入數據庫(我已經創建)。使用sqlitedatabase測驗應用程序

+2

這兩個會的工作。 –

回答

0

如果你已經數據庫文件,你可以使用這個例子

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); 
    } 
} 
+0

獲取更多信息https://github.com/jgilfelt/android-sqlite-asset-helper –