0

Herewith I have attached my code for your review.

My LoginActivity.java:-

login_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                u_name = user_name.getText().toString();
                p_word = password.getText().toString();
                System.out.println("u_name==> "+u_name);
                System.out.println("p_word==> "+p_word);
                test(u_name,p_word);
            }
        });

test method:-

public void test(String u_name,String p_word)
    {
        New_SQLController  dbHelper;
        dbHelper=new New_SQLController(LoginActivity.this); 
        if (dbHelper.Login(u_name,p_word))
        {
            Intent i = new Intent(LoginActivity.this,GPS_Example.class);
            startActivity(i);
        }
        else {
            System.out.println("Login Failed");
        }
    }

My SQLController.java:-

public boolean Login(String username, String password) throws SQLException  
        {  
            Cursor mCursor = database.rawQuery("SELECT * FROM " + New_MyDbHelper.TABLE_LOGIN + " WHERE _user_id=? AND _password=?", new String[]{username,password});  
            if (mCursor != null) {  
                if(mCursor.getCount() > 0)  
                {  
                    return true;  
                }  
            }  
         return false;  
        }  

My DBHelper.java:-

public class New_MyDbHelper extends SQLiteOpenHelper{   

        // TABLE INFORMATTION FOR LOGIN
             public static final String TABLE_LOGIN = "_login";
             public static final String LOGIN_PKEY_ID = "_id";
             public static final String USER_ID = "_user_id";
             public static final String PASSWORD = "_password";

             // DATABASE INFORMATION FOR LOGIN
             static final String DATA_BASE_NAME = "EXAMPLE.DB";
             static final int DATA_BASE_VERSION = 1;

            // TABLE CREATION STATEMENT FOR LOGIN
                 private static final String CREATE_ADDRESS_TABLE = "create table " + TABLE_LOGIN
                   + "(" + LOGIN_PKEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                   + USER_ID + " TEXT NOT NULL ," + PASSWORD + " TEXT NOT NULL);";


         public New_MyDbHelper(Context context) {
          super(context, DATA_BASE_NAME, null, DATA_BASE_VERSION);

         }

         @Override
         public void onCreate(SQLiteDatabase db) {
          db.execSQL(CREATE_ADDRESS_TABLE);
         }

         @Override
         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

          db.execSQL("DROP TABLE IF EXISTS " + CREATE_ADDRESS_TABLE);
          onCreate(db);

         }

}

My problem is when I click the login button my application is force closed.

Error Message:-

05-29 11:23:31.271: E/AndroidRuntime(23372): FATAL EXCEPTION: main
05-29 11:23:31.271: E/AndroidRuntime(23372): java.lang.NullPointerException
05-29 11:23:31.271: E/AndroidRuntime(23372):    at com.testing.dbhelper.New_SQLController.Login(New_SQLController.java:50)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at com.testing.login_example.LoginActivity.test(LoginActivity.java:64)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at com.testing.login_example.LoginActivity$1.onClick(LoginActivity.java:40)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at android.view.View.performClick(View.java:4204)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at android.view.View$PerformClick.run(View.java:17355)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at android.os.Handler.handleCallback(Handler.java:725)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at android.os.Looper.loop(Looper.java:137)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at android.app.ActivityThread.main(ActivityThread.java:5041)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at java.lang.reflect.Method.invokeNative(Native Method)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at java.lang.reflect.Method.invoke(Method.java:511)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-29 11:23:31.271: E/AndroidRuntime(23372):    at dalvik.system.NativeStart.main(Native Method)

Please let me know what mistake I did? Even I try with hardcoded values. It is also showing error. Please let me any idea to resolve this problem.

Thanks in advance.

My New_SQLController :-

public class New_SQLController {

    private New_MyDbHelper dbhelper;
    private Context ourcontext;
    private SQLiteDatabase database;

    public New_SQLController(Context c) {
        ourcontext = c;
    }

    public New_SQLController open() throws SQLException {
        dbhelper = new New_MyDbHelper(ourcontext);
        database = dbhelper.getWritableDatabase();
        return this;

    }

    public void close() {
        dbhelper.close();
    }

    public void insertData(String u_name, String p_word) {
        ContentValues cv = new ContentValues();
        cv.put(New_MyDbHelper.USER_ID, u_name);
        cv.put(New_MyDbHelper.PASSWORD, p_word);
        database.insert(New_MyDbHelper.TABLE_LOGIN, null, cv);
        //rowCount();   
    }

     public boolean validateUser(String username, String password){
         Cursor c = database.rawQuery(
                  "SELECT * FROM " + New_MyDbHelper.TABLE_LOGIN + " WHERE "
                          + New_MyDbHelper.USER_ID + "='" + username +"'AND "+New_MyDbHelper.PASSWORD+"='"+password+"'" ,  null);
         if (c.getCount()>0)
            return true;
            return false;
      }

     public boolean Login(String username, String password) throws SQLException  
        {  
            Cursor mCursor = database.rawQuery("SELECT * FROM " + New_MyDbHelper.TABLE_LOGIN + " WHERE _user_id=? AND _password=?", new String[]{username,password});  
            if (mCursor != null) {  
                if(mCursor.getCount() > 0)  
                {  
                    return true;  
                }  
            }  
         return false;  
        }  

    public void rowCount()
    {
        Cursor mCount= database.rawQuery("select count(*) from '"+New_MyDbHelper.TABLE_LOGIN+"'", null);
        mCount.moveToFirst();
        int count= mCount.getInt(0);
        mCount.close();
        System.out.println("Totoal Row Count==>"+count);
        if(count>5)
            deleteFirstRow();
    }

    public void deleteAll() {
        database.execSQL("delete from " + New_MyDbHelper.TABLE_LOGIN);
        database.close();
    }

    public void deleteFirstRow() {
        Cursor cursor = database.query(New_MyDbHelper.TABLE_LOGIN, null, null,
                null, null, null, null);

        if (cursor.moveToFirst()) {
            String rowId = cursor.getString(cursor
                    .getColumnIndex(New_MyDbHelper.LOGIN_PKEY_ID));

            database.delete(New_MyDbHelper.TABLE_LOGIN, New_MyDbHelper.LOGIN_PKEY_ID
                    + "=?", new String[] { rowId });
        }
        database.close();
    }

    public Cursor readEntry() {

        String[] allColumns = new String[] { New_MyDbHelper.LOGIN_PKEY_ID,
                New_MyDbHelper.USER_ID, New_MyDbHelper.PASSWORD };

        Cursor c = database.query(New_MyDbHelper.TABLE_LOGIN, allColumns, null,
                null, null, null, null);

        if (c != null) {
            c.moveToFirst();
        }
        return c;

    }


}
Vijay
  • 3,152
  • 3
  • 24
  • 33
  • What's line New_SQLController.java:50? – MysticMagicϡ May 29 '14 at 12:05
  • Hi @Little Suzy.. That is one of my class. I have write all the SQL query in that class only. – Vijay May 29 '14 at 12:06
  • database.rawQuery --where is the "database" initialized? Also, what @LittleSuzy is asking is which line is line number 50 in your class New_SQLController.java – Pararth May 29 '14 at 12:08
  • Oh.. I am sorry.. The line 50 is ' Cursor mCursor = database.rawQuery("SELECT * FROM " + New_MyDbHelper.TABLE_LOGIN + " WHERE _user_id=? AND _password=?", new String[]{username,password});' – Vijay May 29 '14 at 12:15
  • I have initialized database in `public New_SQLController open() throws SQLException { dbhelper = new New_MyDbHelper(ourcontext); database = dbhelper.getWritableDatabase(); return this; }` I have added my `New_SQLController.java` with original question. – Vijay May 29 '14 at 12:19
  • 1
    Apparently you missed `open()` call on that particular `New_SQLController` instance. – Vesper May 29 '14 at 12:51
  • Hi @Vesper..!! You are write..!! Now it's working..!! Thank you..!! – Vijay May 29 '14 at 13:34

0 Answers0