2015-05-22 45 views
-2

我在我的應用程序中使用數據庫。爲此,我創建了具有單個實例的sqlite數據庫。但是當我運行應用程序時,沒有創建表格。我不知道是什麼問題。表沒有被創建sqlite android

代碼

public class DatabaseHelper extends SQLiteOpenHelper { 
    private static DatabaseHelper mInstance = null; 

    private static final String DATABASE_NAME = "MCQDemo"; 
    private static final String DATABASE_TABLE = "LANGUAGETABLE"; 
    private static final int DATABASE_VERSION = 1; 

    private Context mCxt; 

    public static DatabaseHelper getInstance(Context ctx) { 
     /** 
     * use the application context as suggested by CommonsWare. 
     * this will ensure that you dont accidentally leak an Activitys 
     * context (see this article for more information: 
     * http://developer.android.com/resources/articles/avoiding-memory-leaks.html) 
     */ 
     if (mInstance == null) { 
      mInstance = new DatabaseHelper(ctx.getApplicationContext()); 
     } 
     return mInstance; 
    } 

    /** 
    * constructor should be private to prevent direct instantiation. 
    * make call to static factory method "getInstance()" instead. 
    */ 
    private DatabaseHelper(Context ctx) { 
     super(ctx, DATABASE_NAME, null, DATABASE_VERSION); 
     this.mCxt = ctx; 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     try { 
      db.execSQL(LanguageTable.CreateTable()); 
     } catch (SQLiteException e) { 

     } 


    } 

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

    } 
} 

LanguageTable

public class LanguageTable { 

     private SQLiteDatabase database; 
     private DatabaseHelper databaseHelper; 
     private Context context; 
     private static String TableName = "LANGUAGETABLE"; 
     private boolean result; 


     private static String Language_Name = "language_name"; 


     public LanguageTable(Context context) { 
      this.context = context; 
      databaseHelper = DatabaseHelper.getInstance(context); 
     } 

     public static String CreateTable() { 
      String query = "Create table " + TableName + " (" + 
        Language_Name + " varchar " + 
        ");"; 

      return query; 

     } 

public boolean insertLanguages(LanguageModel object) { 

     long result = 0; 

     if (object == null) { 
      return false; 
     } else { 
      database = databaseHelper.getWritableDatabase(); 

      ContentValues values = new ContentValues(); 
      values.put(Language_Name, object.getLanguageName()); 

      try { 
       result = database.insert(TableName, null, values); 
      } catch (SQLiteException e) { 

      } 
      database.close(); 

      if (result == 1) { 
       return true; 
      } else { 
       return false; 

      } 


     } 


    } 

} 

在那裏它被稱爲

private void initialize() { 
     actionBar.hide(); 

     languageTable = new LanguageTable(context); 
     tvMessage = (TextView) findViewById(R.id.tv_message); 
     rlRoot = (RelativeLayout) findViewById(R.id.rl_splash_root); 
     rlRoot.setOnClickListener(SplashScreen.this); 

     // 
     insertData(); 


    } 

    private void insertData() { 

     arrLanguages = context.getResources().getStringArray(R.array.language_array); 
     for (int i = 0; i < arrLanguages.length; i++) { 

      languageModel = new LanguageModel(arrLanguages[i]); 
      result = languageTable.insertLanguages(languageModel); 


     } 
    } 

請你幫我找出問題的畫面。 謝謝

+0

發佈您的logcat。 –

回答

2

您需要在助手上調用getWritableDatabase()getReadableDatabase()來實際創建數據庫文件。 When is SQLiteOpenHelper onCreate()/onUpgrade() run?

還可以考慮在幫手的onCreate()中刪除try-catch。如果出現問題,則需要拋出異常並且不會被忽略。

+0

@laalto這就是我所談論的! –

+0

@AnujMody沒有證據表明你打電話給'getWritableDatabase()' – laalto

+0

@laalto SIr插入時,我已經調用了該方法 –