2013-07-18 3 views
1

класс, используемый для создания базы данных:Использование SQLite базы данных и сила закрывает

import android.app.Activity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 

public class sqlite extends Activity { 
    public void sqlitetry(final SQLiteDatabase sqLiteDB) { 
     String createSql = "CREATE TABLE" + 
       "(_id integer primary key autoincrement, " + 
       "name text not null);"; 
     sqLiteDB.execSQL(createSql); 
    } 

    public void sqlinit() { 
     SQLiteDatabase db = openOrCreateDatabase("MyDatabase",MODE_PRIVATE,null); 
     db.execSQL("CREATE TABLE id note exist MyTable(username Varchar, password Varchar PRIMARY KEY);"); 
     Cursor c = db.rawQuery("Select * from MyTable", null); 
     c.moveToFirst(); 
     while(c.isAfterLast() == false) { 

     }  
    } 
} 

Когда я добавить этот код для входа в систему и подтверждения регистрации класса и начать свою деятельность, это сила, закрывающую:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login); 

    sqlite as = new sqlite(); 
    SQLiteDatabase sqLiteDB = null; 
    as.sqlitetry(sqLiteDB); 
    as.sqlinit(); 

После установки APK на устройстве, это показано в LogCat:

07-18 09:51:39.875: D/AndroidRuntime(25677): Shutting down VM 
07-18 09:51:39.875: W/dalvikvm(25677): threadid=1: thread exiting with uncaught exception (group=0x40018578) 
07-18 09:51:39.882: E/AndroidRuntime(25677): FATAL EXCEPTION: main 
07-18 09:51:39.882: E/AndroidRuntime(25677): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.login1/com.example.login1.Login}: java.lang.NullPointerException 
07-18 09:51:39.882: E/AndroidRuntime(25677): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at android.os.Looper.loop(Looper.java:130) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at android.app.ActivityThread.main(ActivityThread.java:3687) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at java.lang.reflect.Method.invokeNative(Native Method) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at java.lang.reflect.Method.invoke(Method.java:507) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at dalvik.system.NativeStart.main(Native Method) 
07-18 09:51:39.882: E/AndroidRuntime(25677): Caused by: java.lang.NullPointerException 
07-18 09:51:39.882: E/AndroidRuntime(25677): at com.example.login1.sqlite.sqlitetry(sqlite.java:12) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at com.example.login1.Login.onCreate(Login.java:25) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
07-18 09:51:39.882: E/AndroidRuntime(25677): ... 11 more 

мне нужно поставить информацию пользователя при регистрации в базе данных и вытащить его, чтобы пользователь мог войти в систему, но он закроется, и я не знаю, что делать. Может кто-нибудь мне помочь?

+1

Что исключение Вы наблюдали в LogCat? – sandrstar

+0

Ваш класс sqlite расширяет 'Activity'. Также у вас нет метода 'onCreate'. – Raghunandan

+0

там вы идете. я забыл опубликовать Logcat. просто закончил редактирование. благодаря! –

ответ

0

Класс sqlite расширяет деятельность. Кроме того, вы не имеете onCreate метод в SQLite

Тогда у вас есть эта

sqlite as = new sqlite(); 

Вам нужно, чтобы начать деятельность с использованием startActivity(new Intent(myintent)).

Предложите вам изучать деятельность.

http://developer.android.com/guide/components/activities.html

Также у вас есть этот

sqlite as = new sqlite(); //sqlite class extends activity 
SQLiteDatabase sqLiteDB = null; // null value 
as.sqlitetry(sqLiteDB); 
as.sqlinit(); 

Ваш SQLite не должен простираться Activity если его просто вспомогательный класс.

Также проверьте данное учебное пособие

http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

Отъезд учебник @ Youtube Трэвис

http://www.youtube.com/watch?v=gEg9OdufXmM (серии 112 до 119 я думаю)

2

Основываясь на LogCat, вы можете увидеть, что этот отчет линия фактическая ошибка:

07-18 09:51:39.882: E/AndroidRuntime(25677): Caused by: java.lang.NullPointerException 

После этой линии, вы увидите 2-я линия, которая является стек выполнения кода, который генерирует фактическую ошибку:

07-18 09:51:39.882: E/AndroidRuntime(25677): at com.example.login1.sqlite.sqlitetry(sqlite.java:12) 
07-18 09:51:39.882: E/AndroidRuntime(25677): at com.example.login1.Login.onCreate(Login.java:25) 

Исходя из этого, ваша проблема была просто becuase нулевого значения sqLiteDB:

SQLiteDatabase sqLiteDB = null; 
as.sqlitetry(sqLiteDB); 
+0

, что мне делать? –

+0

вызовите init перед попыткой. init имеет тенденцию на первом месте, нет? – Kevin

Смежные вопросы