На самом деле я пытаюсь реализовать простую программу SQLiteDatabase. Класс MainActivity работает без проблем. когда я пытался вызвать методы класса DBUserAdapter, мое приложение завершается.Как вызвать другой объект класса в класс MainActivity?
MainActivity класс
btninsert = (Button)findViewById(R.id.insertbtn);
btninsert.setOnClickListener(insertListener);
OnClickListener insertListener = new OnClickListener() {
@Override
public void onClick(View v) {
username = txtUserName.getText().toString();
password = txtPassword.getText().toString();
DBUserAdapter dbUser = new DBUserAdapter(getApplicationContext());
dbUser.open();
if(username.length()>0||password.length()>0){
if(dbUser.AddUser(username, password)){
Toast.makeText(getApplicationContext(), "User Successfully Inserted", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(getApplicationContext(), "User Already Existed in Records", Toast.LENGTH_SHORT).show();
}
}else {
Toast.makeText(getApplicationContext(), "Enter The Values", Toast.LENGTH_SHORT).show();
}
}
};
DBUserAdapter:
public class DBUserAdapter {
public static final String KEY_ROWID = "_id";
public static final String KEY_USERNAME = "username";
public static final String KEY_PASSWORD = "password";
public static final String TAG = "DBAdapter";
public static final String DATABASE_TABLE = "users";
public static final String DATABASE_NAME = "userdb";
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_CREATE = "CREATE TABLE "+DATABASE_TABLE+" ("+KEY_ROWID+ " INTEGER PRIMARY KEY , "+
KEY_USERNAME+ " TEXT,"+KEY_PASSWORD+"TEXT)";
private Context context;
private static SQLiteDatabase db;
private static DatabaseHelper DBHelper;
public DBUserAdapter(Context c){
this.context = c;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading the Database from Version"+oldVersion+"to"+newVersion+",which will gestroy all old data");
db.execSQL("DROP TABLE IF EXISTS"+DATABASE_TABLE);
onCreate(db);
}
}
public void open() throws SQLException{
db = DBHelper.getWritableDatabase();
}
public void close(){
DBHelper.close();
}
public boolean AddUser(String username, String password){
Cursor mCursor = db.rawQuery("SELECT * FROM"+DATABASE_TABLE+"WHERE username = ?", new String[]{username});
if(mCursor != null){
if(mCursor.getCount()>0){
return false;
}
}
ContentValues values = new ContentValues();
values.put(KEY_USERNAME, username);
values.put(KEY_PASSWORD, password);
db.insert(DATABASE_TABLE, null, values);
return true;
}
}
Ваша помощь будет оценена. Спасибо ...
Вот LogCat ..
02-11 01:17:39.484: I/Process(1085): Sending signal. PID: 1085 SIG: 9
02-11 01:18:49.554: D/gralloc_goldfish(1138): Emulator without GPU emulation detected.
02-11 01:18:53.444: D/AndroidRuntime(1138): Shutting down VM
02-11 01:18:53.444: W/dalvikvm(1138): threadid=1: thread exiting with uncaught exception (group=0xb4a2cba8)
02-11 01:18:53.464: E/AndroidRuntime(1138): FATAL EXCEPTION: main
02-11 01:18:53.464: E/AndroidRuntime(1138): Process: com.siva.sqlite_app, PID: 1138
02-11 01:18:53.464: E/AndroidRuntime(1138): java.lang.NullPointerException
02-11 01:18:53.464: E/AndroidRuntime(1138): at com.siva.sqlite_app.MainActivity$5.onClick(MainActivity.java:142)
02-11 01:18:53.464: E/AndroidRuntime(1138): at android.view.View.performClick(View.java:4438)
02-11 01:18:53.464: E/AndroidRuntime(1138): at android.view.View$PerformClick.run(View.java:18422)
02-11 01:18:53.464: E/AndroidRuntime(1138): at android.os.Handler.handleCallback(Handler.java:733)
02-11 01:18:53.464: E/AndroidRuntime(1138): at android.os.Handler.dispatchMessage(Handler.java:95)
02-11 01:18:53.464: E/AndroidRuntime(1138): at android.os.Looper.loop(Looper.java:136)
02-11 01:18:53.464: E/AndroidRuntime(1138): at android.app.ActivityThread.main(ActivityThread.java:5017)
02-11 01:18:53.464: E/AndroidRuntime(1138): at java.lang.reflect.Method.invokeNative(Native Method)
02-11 01:18:53.464: E/AndroidRuntime(1138): at java.lang.reflect.Method.invoke(Method.java:515)
02-11 01:18:53.464: E/AndroidRuntime(1138): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-11 01:18:53.464: E/AndroidRuntime(1138): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-11 01:18:53.464: E/AndroidRuntime(1138): at dalvik.system.NativeStart.main(Native Method)
02-11 01:18:56.244: I/Process(1138): Sending signal. PID: 1138 SIG: 9
Использование статической переменной. – InnocentKiller
Сбой при вызове 'AddUser'? – Apoorv
Просьба указать logcat – gilonm