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