안녕하세요. db에서 id / pw 가져와서 로그인할려고 합니다.
어디서 오류 난지를 모르겟어요...안드로이드 실행하면 오류를 띄우고 시작을 못하네요.ㅠ.ㅠ
dbAuth = dbHelper.get("root"); 이거 주석처리하면 실행은 됩니다.
import android.app.Activity; import android.os.Bundle; import android.content.Intent; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.Toast; import exam.Kidnaping.DBHelper; import exam.Kidnaping.DBHelper.Auth;
public class Anti extends Activity implements OnClickListener{
/** Called when the activity is first created. */
private DBHelper dbHelper;
private DBHelper.Auth dbAuth;
private EditText Edit_id;
private EditText Edit_pw;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Edit_id = (EditText) findViewById(R.id.input_id);
Edit_pw = (EditText) findViewById(R.id.input_pw);
View Student_button = findViewById(R.id.login_check);
Student_button.setOnClickListener(this);
View exit_button = findViewById(R.id.exit_button);
exit_button.setOnClickListener(this);
dbAuth = dbHelper.get("root"); <<<<----------여기서 문제임..ㅠㅠ
//Edit_id.setText(this.dbAuth.ids);
//Edit_pw.setText(this.dbAuth.pws);
}
public void LoginCheck(){
Intent s = new Intent(this, Menu.class);
startActivity(s);
}
public void onClick(View v){
switch (v.getId()) {
case R.id.login_check:
this.LoginCheck();
break;
case R.id.exit_button:
super.finish();
break;
}//SWITCH
}//function
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
this.dbHelper = new DBHelper(this);
this.dbAuth = null;
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
this.dbHelper.cleanup();
}
}
dbhelper.java
import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log;
public class DBHelper {
public static final String DB_NAME = "user_table";
public static final String DB_TABLE = "id_pw";
public static final int DB_VERSION = 1;
private static final String CLASSNAME = DBHelper.class.getSimpleName();
private static final String[] COLS = new String[] {"_id", "pw"};
private SQLiteDatabase db;
private final DBOpenHelper dbOpenHelper;
public static class Auth {
public String ids = "";
public String pws = "";
public Auth() {
}
public Auth(final String id, final String pw) {
this.ids = id;
this.pws = pw;
}
}
private static class DBOpenHelper extends SQLiteOpenHelper {
private static final String DB_CREATE = "CREATE TABLE "
+ DBHelper.DB_TABLE
+ " (_id String PRIMARY KEY, pw String UNIQUE NOT NULL);";
private static final String INIT_PW = "INSERT INTO "
+DBHelper.DB_TABLE
+" VALUES('root','1234');";
public DBOpenHelper(final Context context) {
super(context, DBHelper.DB_NAME, null, DBHelper.DB_VERSION);
}
@Override
public void onCreate(final SQLiteDatabase db) {
try {
db.execSQL(DBOpenHelper.DB_CREATE);
db.execSQL(DBOpenHelper.INIT_PW);
} catch (SQLException e) {
Log.v("Dbhelper",DBHelper.CLASSNAME, e);
}
}
@Override
public void onOpen(final SQLiteDatabase db) {
super.onOpen(db);
}
@Override
public void onUpgrade(final SQLiteDatabase db, final int oldVersion, final int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DBHelper.DB_TABLE);
onCreate(db);
}
}
public DBHelper(final Context context) {
this.dbOpenHelper = new DBOpenHelper(context);
establishDb();
}
private void establishDb() {
if (this.db == null) {
this.db = this.dbOpenHelper.getWritableDatabase();
}
}
public void cleanup() {
if (this.db != null) {
this.db.close();
this.db = null;
}
}
/*
public void insert(final Auth auth) {
ContentValues values = new ContentValues();
values.put("id", auth.ids);
values.put("pw", auth.pws);
this.db.insert(DBHelper.DB_TABLE, null, values);
}
public void update(final Auth auth) {
ContentValues values = new ContentValues();
values.put("id", auth.ids);
values.put("pw", auth.pws);
this.db.update(DBHelper.DB_TABLE, values, "_id=" + auth.ids, null);
}
public void delete(final long id) {
this.db.delete(DBHelper.DB_TABLE, "_id=" + id, null);
}
*/
String strParam[] = { "root" };
public Auth get(String id) { <<<--여기좀 봐주세요.
Cursor c = null;
Auth auth = null;
try {
c = this.db.rawQuery("SELECT * FROM id_pw WHERE _id="+"root",null);
if (c.getCount() > 0) {
c.moveToFirst();
auth = new Auth();
auth.ids = c.getString(0);
auth.pws = c.getString(1);
}
} catch (SQLException e) {
Log.v("Dbhelper",DBHelper.CLASSNAME, e);
} finally {
if (c != null && !c.isClosed()) {
c.close();
}
}
return auth;
}
}
오류는 이렇게 나요.ㅠ.ㅠ
06-02 02:54:01.499: ERROR/AndroidRuntime(657): ERROR: thread attach failed
06-02 02:54:11.808: ERROR/AndroidRuntime(668): ERROR: thread attach failed
06-02 02:54:15.218: ERROR/AndroidRuntime(675): Uncaught handler: thread main exiting due to uncaught exception
06-02 02:54:15.268: ERROR/AndroidRuntime(675): java.lang.RuntimeException: Unable to start activity ComponentInfo{exam.Kidnaping/exam.Kidnaping.Anti_Kidnaping}: java.lang.NullPointerException
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at android.os.Handler.dispatchMessage(Handler.java:99)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at android.os.Looper.loop(Looper.java:123)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at android.app.ActivityThread.main(ActivityThread.java:4363)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at java.lang.reflect.Method.invokeNative(Native Method)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at java.lang.reflect.Method.invoke(Method.java:521)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at dalvik.system.NativeStart.main(Native Method)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): Caused by: java.lang.NullPointerException
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at exam.Kidnaping.Anti_Kidnaping.onCreate(Anti_Kidnaping.java:33)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
06-02 02:54:15.268: ERROR/AndroidRuntime(675): ... 11 more
06-02 02:55:07.069: ERROR/gralloc(59): [unregister] handle 0x4b6d28 still locked (state=40000001)




privateDBHelper dbHelper;
이렇게 선언은 하셨는데
객체 생성은 안하셨네요..
그러면
dbHelper는 null 입니다. 객체 생성 하세요.