2015-06-12 123 views
0

你能告诉我我做错了什么吗?我已经为android使用sqlite开发了一些应用程序,没有任何错误。而我通过查看前一个项目中的代码来实现这一点。我也在另一台设备上试过这个应用程序,但仍然出现错误。SQLite does not create table

Screeenshot using SQLite Browser

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

/** 
* Created by Asus on 6/12/2015. 
*/ 
public class DatabaseAdapter { 

    private static final String DATABASE_NAME = "xxxxxxxxx"; 
    private static final int DATABASE_VERSION = 1; 

    private static final String TABLE_FOLlOW = "follow"; 
    public static final String KEY_FOLLOW_ID = "_id"; 
    public static final String KEY_FOLLOW_KODE = "kode_kategori"; 

    private static final String TABLE_LOKASI = "lokasi"; 
    public static final String KEY_LOKASI_ID = "_id"; 
    public static final String KEY_LOKASI_KODE = "kode_lokasi"; 

    private static final String TABLE_USER = "user"; 
    public static final String KEY_USER_ID = "_id"; 
    public static final String KEY_USER_EMAIL = "email"; 
    public static final String KEY_USER_PASSWORD = "pass"; 

    private static final String CREATE_TABLE_FOLLOW = "CREATE TABLE "+ TABLE_FOLlOW +"("+ KEY_FOLLOW_ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "+ KEY_FOLLOW_KODE +" TEXT NOT NULL)"; 
    private static final String CREATE_TABLE_LOKASI = "CREATE TABLE "+ TABLE_LOKASI +"("+ KEY_LOKASI_ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "+ KEY_LOKASI_KODE +" TEXT NOT NULL)"; 
    private static final String CREATE_TABLE_USER = "CREATE TABLE "+ TABLE_USER +"("+ KEY_USER_ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "+ KEY_USER_EMAIL +" TEXT NOT NULL, "+ KEY_USER_PASSWORD +" TEXT NOT NULL)"; 

    private static final String[] KOLOM_FOLLOW = new String[]{KEY_FOLLOW_ID, KEY_FOLLOW_KODE}; 
    private static final String[] KOLOM_LOKASI = new String[]{KEY_LOKASI_ID, KEY_LOKASI_KODE}; 
    private static final String[] KOLOM_USER = new String[]{KEY_USER_ID, KEY_USER_EMAIL, KEY_USER_PASSWORD}; 

    private Context mCtx; 
    private DatabaseHelper dbHelper; 
    private SQLiteDatabase mDb; 

    private class DatabaseHelper extends SQLiteOpenHelper{ 

     public DatabaseHelper(Context c) { 
      super(c, DATABASE_NAME, null, DATABASE_VERSION); 
      Log.d("DatabaseAdapter", "public DatabaseAdapter(Context c) is running"); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      db.execSQL(CREATE_TABLE_FOLLOW); 
      Log.d("DatabaseAdapter", "Membuat tabel " + TABLE_FOLlOW); 
      db.execSQL(CREATE_TABLE_LOKASI); 
      Log.d("DatabaseAdapter", "Membuat tabel " + TABLE_LOKASI); 
      db.execSQL(CREATE_TABLE_USER); 
      Log.d("DatabaseAdapter", "Membuat tabel " + TABLE_USER); 
      Log.d("DatabaseAdapter","Oncreate method"); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      Log.d("DatabaseAdapter","Upgrade database from "+ oldVersion +" version to "+ newVersion +" version"); 
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_FOLlOW); 
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_LOKASI); 
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_USER); 
      onCreate(db); 
     } 
    } 

    public DatabaseAdapter(Context context){ 
     this.mCtx = context; 
     dbHelper = new DatabaseHelper(mCtx); 
     mDb = dbHelper.getWritableDatabase(); 
    } 

    public long storeUserTemp(String email, String password){ 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_USER_EMAIL, email); 
     cv.put(KEY_USER_PASSWORD, password); 
     return mDb.insert(TABLE_USER, null, cv); 
    } 

    public long storeFollow(String kode){ 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_FOLLOW_KODE, kode); 
     return mDb.insert(TABLE_FOLlOW, null, cv); 
    } 

    public long deleteAllFollow(){ 
     return mDb.delete(TABLE_FOLlOW, null, null); 
    } 

    public boolean isUserAvailable(){ 
     Cursor cursor = mDb.query(TABLE_USER, KOLOM_USER, null, null, null, null, null); 
     if(cursor.getCount() > 0) 
      return true; 
     else 
      return false; 
    } 

    public boolean isFollow(String kode){ 
     Cursor cursor = mDb.query(TABLE_FOLlOW, new String[]{KEY_FOLLOW_KODE}, KEY_FOLLOW_KODE +"='"+ kode +"'", null, null, null, null); 
     if(cursor.getCount() > 0) 
      return true; 
     else 
      return false; 
    } 

    public String getUserTempEmail(){ 
     Cursor cursor = mDb.query(TABLE_USER, new String[]{KEY_USER_EMAIL}, null, null, null, null, null); 
     String email = cursor.getString(cursor.getColumnIndex(KEY_USER_EMAIL)); 
     return email; 
    } 

    public String getUserTempPassword(){ 
     Cursor cursor = mDb.query(TABLE_USER, new String[]{KEY_USER_PASSWORD}, null, null, null, null, null); 
     String pass = cursor.getString(cursor.getColumnIndex(KEY_USER_PASSWORD)); 
     return pass; 
    } 

    public String[] getAllFollow(){ 
     Cursor cursor = mDb.query(TABLE_FOLlOW, null, null, null, null, null, null); 
     int totalFollow = cursor.getCount(); 
     String[] follow = new String[totalFollow]; 
     if(totalFollow > 0){ 
      for(int i=0; i<totalFollow; i++) 
       follow[i] = cursor.getString(i+1); 
     } 
     return follow; 
    } 

} 

UPDATE 我已经从我的最后一个项目试图器具DatabaseAdapter类和使用过Android Studio编译并得到同样的错误,最后我总是使用eclipse。请给我理由。我不知道我该怎么做。

+0

你叫getWritableDatabase()从任何地方吗?检查你的logcat如果onCreate方法已被调用或不 –

回答

-3

尝试从XXXXX更改数据库名称xxxxx.sqlite(如果它不包含extesion)

+0

而且你还需要root权限从应用程序外部访问数据库文件。 – Vaizadoo

+0

我的手机已经扎根 –