2014-10-20 161 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

相关问题