2014-10-20 62 views
-2

我想爲我的android應用程序在sqlite中創建一個簡單的數據庫。我只想將我的值添加到表格中。如何在android中爲我的應用程序創建本地數據庫

這是我的代碼,但這不適用於我,因爲該表未在DDMS中顯示。

public class QuickSubmitContext extends SQLiteOpenHelper { 
    private static final int DATABASE_VERSION = 1; 
    private static final String DATABASE_NAME = "submitManager"; 
    private static final String TABLE_CONTACTS = "submit"; 
    private static final String KEY_ID = "id"; 
    private static final String KEY_PH_NO = "phone_number"; 
    private static final String KEY_DNCA = "donotca"; 
    private static final String KEY_CA = "callagain"; 
    private static final String KEY_NOTE = "note"; 
    public QuickSubmitContext(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY," + KEY_PH_NO + " TEXT," 
       + KEY_DNCA + " TEXT," + KEY_CA + " TEXT," + KEY_NOTE + " TEXT" + ")"; 
      db.execSQL(CREATE_CONTACTS_TABLE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); 

     // Create tables again 
     onCreate(db); 
    } 
} 

logcat的

10-21 04:39:00.230: E/AndroidRuntime(835): FATAL EXCEPTION: main 
10-21 04:39:00.230: E/AndroidRuntime(835): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aspeage.quikw/com.aspeage.quikw.FragmentLayout}: java.lang.NullPointerException 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.os.Looper.loop(Looper.java:137) 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.app.ActivityThread.main(ActivityThread.java:5041) 
10-21 04:39:00.230: E/AndroidRuntime(835): at java.lang.reflect.Method.invokeNative(Native Method) 
10-21 04:39:00.230: E/AndroidRuntime(835): at java.lang.reflect.Method.invoke(Method.java:511) 
10-21 04:39:00.230: E/AndroidRuntime(835): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
10-21 04:39:00.230: E/AndroidRuntime(835): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
10-21 04:39:00.230: E/AndroidRuntime(835): at dalvik.system.NativeStart.main(Native Method) 
10-21 04:39:00.230: E/AndroidRuntime(835): Caused by: java.lang.NullPointerException 
10-21 04:39:00.230: E/AndroidRuntime(835): at com.aspeage.quikw.FragmentLayout.onCreate(FragmentLayout.java:79) 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.app.Activity.performCreate(Activity.java:5104) 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
10-21 04:39:00.230: E/AndroidRuntime(835): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
10-21 04:39:00.230: E/AndroidRuntime(835): ... 11 more 
10-21 04:39:07.090: I/Process(835): Sending signal. PID: 835 SIG: 9 
10-21 04:39:13.050: E/Trace(866): error opening trace file: No such file or directory (2) 
+1

請看看這個教程: http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/ – 2014-10-20 09:02:48

+0

@FaroukTouzi我看到該鏈接,也做了,但我因爲有一個問題我的數據庫表中沒有顯示我的logcat – Shekhar 2014-10-20 09:07:17

+0

究竟是什麼錯誤?請顯示你的logcat。 – 2014-10-20 09:11:10

回答

4

推薦的方法來創建一個新的SQLite數據庫是建立SQLiteOpenHelper一個子類並覆蓋onCreate()方法,您可以在其中執行SQLite的命令創建的表數據庫。例如:

public class DictionaryOpenHelper extends SQLiteOpenHelper { 

    private static final int DATABASE_VERSION = 2; 
    private static final String DICTIONARY_TABLE_NAME = "dictionary"; 
    private static final String DICTIONARY_TABLE_CREATE = 
       "CREATE TABLE " + DICTIONARY_TABLE_NAME + " (" + 
       KEY_WORD + " TEXT, " + 
       KEY_DEFINITION + " TEXT);"; 

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

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(DICTIONARY_TABLE_CREATE); 
    } 
} 

以下是說明。 http://developer.android.com/guide/topics/data/data-storage.html#db

+0

非常感謝您 – Shekhar 2014-10-20 09:39:58

+0

請再次檢查我修改我的問題 – Shekhar 2014-10-20 11:06:26

+0

@Shekhar把一些日誌放在onCreate(),以確保數據庫創建。 – 2014-10-20 12:22:41

相關問題