2014-03-01 108 views
0

我創建了一個應用程序註冊數據庫connectivity.to存儲和檢索data.name(應輸入名字和姓氏)和電子郵件ID在佈局中使用。三個按鈕用於顯示錶格,創建表格並在佈局處關閉。Android中的SQLite數據庫連接

但是,當運行我的應用程序,它顯示「不幸的是應用程序已停止」。我在logcat中出錯。

我發佈了我的logcat錯誤和我的所有代碼。我不知道在哪裏存放餐桌?

logcat的錯誤

02-28 22:13:01.430: D/AndroidRuntime(785): Shutting down VM 
02-28 22:13:01.430: W/dalvikvm(785): threadid=1: thread exiting with uncaught exception (group=0xb4aa8b90) 
02-28 22:13:01.440: E/AndroidRuntime(785): FATAL EXCEPTION: main 
02-28 22:13:01.440: E/AndroidRuntime(785): Process: com.example.studentdatabase, PID: 785 
02-28 22:13:01.440: E/AndroidRuntime(785): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.studentdatabase/com.example.studentdatabase.MainActivity}: java.lang.NullPointerException 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176) 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226) 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.app.ActivityThread.access$700(ActivityThread.java:135) 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.os.Handler.dispatchMessage(Handler.java:102) 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.os.Looper.loop(Looper.java:137) 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.app.ActivityThread.main(ActivityThread.java:4998) 
02-28 22:13:01.440: E/AndroidRuntime(785): at java.lang.reflect.Method.invokeNative(Native Method) 
02-28 22:13:01.440: E/AndroidRuntime(785): at java.lang.reflect.Method.invoke(Method.java:515) 
02-28 22:13:01.440: E/AndroidRuntime(785): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
02-28 22:13:01.440: E/AndroidRuntime(785): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
02-28 22:13:01.440: E/AndroidRuntime(785): at dalvik.system.NativeStart.main(Native Method) 
02-28 22:13:01.440: E/AndroidRuntime(785): Caused by: java.lang.NullPointerException 
02-28 22:13:01.440: E/AndroidRuntime(785): at com.example.studentdatabase.MainActivity.onCreate(MainActivity.java:27) 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.app.Activity.performCreate(Activity.java:5243) 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
02-28 22:13:01.440: E/AndroidRuntime(785): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140) 
02-28 22:13:01.440: E/AndroidRuntime(785): ... 11 more 

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="22dp" 
     android:layout_marginTop="54dp" 
     android:text="FirstName" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView1" 
     android:layout_below="@+id/textView1" 
     android:layout_marginTop="48dp" 
     android:text="LastName" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView2" 
     android:layout_below="@+id/textView2" 
     android:layout_marginTop="55dp" 
     android:text="Email" /> 

    <EditText 
     android:id="@+id/firstname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/textView2" 
     android:layout_alignParentRight="true" 
     android:ems="10" /> 

    <EditText 
     android:id="@+id/lastname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/textView3" 
     android:layout_alignParentRight="true" 
     android:ems="10" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView3" 
     android:layout_below="@+id/textView3" 
     android:layout_marginTop="69dp" 
     android:onClick = "Adddata" 
     android:text="Create" /> 

    <Button 
     android:id="@+id/button3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="31dp" 
     android:layout_toLeftOf="@+id/button2" 
     android:onClick="Showdata" 
     android:text="Show" /> 

    <EditText 
     android:id="@+id/email" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView3" 
     android:layout_alignParentRight="true" 
     android:ems="10" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/button1" 
     android:layout_alignBottom="@+id/button1" 
     android:layout_alignRight="@+id/email" 
     android:layout_marginRight="24dp" 
     android:onClick="close" 
     android:text="Close" /> 

</RelativeLayout> 

MainActivity.java

package com.example.studentdatabase; 

import android.R.color; 
import android.R.integer; 
import android.os.Bundle; 
import android.provider.Settings.System; 
import android.app.Activity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.graphics.Typeface; 
import android.view.Menu; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
    private static final String[] Student = null; 
    String fname,lname,email; 
    SQLiteDatabase db; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     db= openOnCreateDatabase("MYDB1 MODE_PRIVATE",null); 
     db.execSQL("CREATE TABLE IF NOT EXITS student(fname VARCHAR,lname VARCHAR,email VARCHAR);"); 
    } 
    private SQLiteDatabase openOnCreateDatabase(String string, Object object) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
    private void Adddata(View view) 
    { 
    EditText editText1 = (EditText)findViewById(R.id.firstname); 
    EditText editText2 = (EditText)findViewById(R.id.lastname); 
    EditText editText3 = (EditText)findViewById(R.id.email); 
    fname = editText1.getText().toString(); 
    lname = editText2.getText().toString(); 
    email = editText3.getText().toString(); 
    db.execSQL("INSERT INTO Student VALUES('"+fname+"','"+lname+"','"+email+"');"); 
    } 

    private void Showdata(View view) 
    { 
Cursor c = db.rawQuery("SELECT from Student",null); 
int count = c.getCount(); 
c.moveToFirst(); 
TableLayout tableLayout = new TableLayout(getApplicationContext()); 
tableLayout.setVerticalScrollBarEnabled(true); 
TableRow tableRow; 
TextView textview,textview1,textview2,textview3,textview4,textview5; 
tableRow = new TableRow(getApplicationContext()); 
textview = new TextView(getApplicationContext()); 
textview.setText("firstname"); 
textview.setTypeface(null,Typeface.BOLD); 
textview.setPadding(20,20,20,20); 
tableRow.addView(textview); 

textview4 = new TextView(getApplicationContext()); 
textview4.setText("lastname"); 
textview4.setTypeface(null,Typeface.BOLD); 
textview4.setPadding(20,20,20,20); 
tableRow.addView(textview4); 

textview5 = new TextView(getApplicationContext()); 
textview5.setText("email"); 
textview5.setTypeface(null,Typeface.BOLD); 
textview5.setPadding(20,20,20,20); 
tableRow.addView(textview5); 

tableLayout.addView(tableRow); 
for(int j=0;j<count;j++) 
{ 
    tableRow = new TableRow(getApplicationContext()); 
    textview1 = new TextView(getApplicationContext()); 
    textview1.setText(c.getString(c.getColumnIndex("fname"))); 
    textview2 = new TextView(getApplicationContext()); 
    textview2.setText(c.getString(c.getColumnIndex("lname"))); 
    textview3 = new TextView(getApplicationContext()); 
    textview3.setText(c.getString(c.getColumnIndex("email"))); 

    textview1.setPadding(20, 20, 20, 20); 
    textview2.setPadding(20, 20, 20, 20); 
    textview3.setPadding(20, 20, 20, 20); 

    tableRow.addView(textview1); 
    tableRow.addView(textview2); 
    tableRow.addView(textview3); 
    tableLayout.addView(tableRow); 
    c.moveToNext(); 

} 
setContentView(tableLayout); 
db.close(); 
    } 
public void close(View view) 
{ 
    java.lang.System.exit(0); 
} 
+0

'「,不幸的是應用程序已經停止,因爲你從'openOnCreateDatabase'方法返回'null',所以'db'爲空。請參閱[Android SQLite數據庫教程](http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/)瞭解我們如何在android應用程序中使用sqlite數據庫 –

回答

0

嘗試使用

db= openOnCreateDatabase("MYDB1 MODE_PRIVATE",Context.MODE_PRIVATE,null);