안녕하세요. 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)
private
DBHelper dbHelper;
이렇게 선언은 하셨는데
객체 생성은 안하셨네요..
그러면
dbHelper는 null 입니다. 객체 생성 하세요.