{"id":1522,"date":"2022-08-30T15:17:14","date_gmt":"2022-08-30T15:17:14","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2013\/11\/26\/application-stop-suddenly-when-tring-to-login-collection-of-common-programming-errors\/"},"modified":"2022-08-30T15:17:14","modified_gmt":"2022-08-30T15:17:14","slug":"application-stop-suddenly-when-tring-to-login-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2022\/08\/30\/application-stop-suddenly-when-tring-to-login-collection-of-common-programming-errors\/","title":{"rendered":"Application stop suddenly when tring to login-Collection of common programming errors"},"content":{"rendered":"<p>After creating inserting username and password signup.java , my app suddenly stop when I login ( in emulator) , and i moves to signup page in (bluestack). Not sure if data is actually being entered in database in signing up.<\/p>\n<p>DBManager.java<\/p>\n<pre><code>package com.example.student_project;\n\nimport com.example.student_project.*;\n\nimport android.content.ContentValues;\nimport android.content.Context;\nimport android.database.Cursor;\nimport android.database.SQLException;\nimport android.database.sqlite.SQLiteDatabase;\nimport android.database.sqlite.SQLiteException;\nimport android.database.sqlite.SQLiteOpenHelper;\n\n\npublic class DBManager  {\n    public static final String KEY_ROWID = \"_id\";\n    public static final String KEY_USERNAME = \"username\";\n    public static final String KEY_PASSWORD = \"password\";\n\n\n    private static final String DATABASE_NAME= \"LOGIN.db\";\n    private static final int DATABASE_VERSION  = 4;\n    private static final String  DATABASE_TABLE = \"LOGIN_TABLE\";\n\n    private static DbHelper ourHelper;\n    private final Context ourContext;\n    private static SQLiteDatabase ourDatabase;\n\n    class DbHelper extends SQLiteOpenHelper {\n\n        public DbHelper(Context context) {\n            super(context, DATABASE_NAME, null, DATABASE_VERSION);\n            \/\/ TODO Auto-generated constructor stub\n        }\n\n        @Override\n        public void onCreate(SQLiteDatabase db) {\n\n            \/\/ TODO Auto-generated method stub\n            db.execSQL(\"CREATE TABLE \" + DATABASE_TABLE + \" ( \" + \n            KEY_ROWID + \" INTEGER PRIMARY KEY AUTOINCREMENT , \" +\n            KEY_USERNAME + \" TEXT NOT NULL , \" + \n            KEY_PASSWORD + \" TEXT NOT NULL );\" \n            );\n                }\n\n        @Override\n        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {\n            \/\/ TODO Auto-generated method stub\n            db.execSQL(\"DROP TABLE IF EXISTS \" + DATABASE_TABLE);\n            onCreate(db);\n        }\n\n    }\n\n\n    public DBManager(Context c) {\n    ourContext = c;\n    }\n\n    public DBManager open() throws SQLException{\n        ourHelper = new DbHelper(ourContext);\n        try\n        {\n            ourDatabase = ourHelper.getWritableDatabase();\n        }\n        catch(SQLException ex)\n        {\n            ourDatabase = ourHelper.getReadableDatabase();\n        }\n        return this;\n    }\n\n    public void close() {\n        ourHelper.close();\n    }\n\n    public long createEntry(String username, String password) throws SQLException\n    {\n        \/\/ TODO Auto-generated method stub\n        ContentValues cv = new ContentValues();\n        cv.put(KEY_USERNAME, username);\n        cv.put(KEY_PASSWORD, password);\n        return ourDatabase.insert(DATABASE_TABLE, null, cv);\n\n    }\n\n    public static boolean verifyUser(String username , String password) \n    {\n\n        String columns[] = new String[2];\n        columns[0] = username;\n        columns[1] = password;\n        Cursor c= null;\n        int count=0;\n        try\n        {\n\n                \/\/ TODO Auto-generated method stub\n                c = ourDatabase.query(DATABASE_TABLE, columns,null , null, null, null, null);\n                count = c.getCount();\n\n        }\n        catch (SQLException e)\n        {\n            \/\/ TODO: handle exception\n            e.printStackTrace();\n        }\n        finally\n        {\n            c.close();\n        }\n        if(count&gt;0)\n        {\n            return true;\n        }\n        else\n        {\n            return false;\n        }\n\n    }\n}\n<\/code><\/pre>\n<p>MainActivity.java<\/p>\n<pre><code>package com.example.student_project;\n\nimport com.example.student_project.*;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.text.InputFilter.LengthFilter;\nimport android.util.Log;\nimport android.view.Menu;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.Button;\nimport android.widget.EditText;\nimport android.widget.Toast;\n\npublic class MainActivity extends Activity implements OnClickListener\n{\n    private Button btn_signup;\n    private Button btn_login;\n    private EditText et_lusername;\n    private EditText et_lpassword;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState)\n    {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n\n        Log.i(\"mytag\",\"this is my tag\");\n        et_lusername = (EditText) findViewById(R.id.et_lusername);\n        et_lpassword = (EditText) findViewById(R.id.et_lpassword);\n        btn_signup = (Button) findViewById(R.id.btn_signup);\n        btn_login = (Button) findViewById(R.id.btn_login);\n\n        btn_login.setOnClickListener(this);\n        btn_signup.setOnClickListener(this);\n\n    }\n\n    @Override\n    public boolean onCreateOptionsMenu(Menu menu)\n    {\n        \/\/ Inflate the menu; this adds items to the action bar if it is present.\n        getMenuInflater().inflate(R.menu.main, menu);\n        return true;\n    }\n\n\n    @Override\n    public void onClick(View v)\n    {\n        \/\/ TODO Auto-generated method stub\n        switch(v.getId())\n        {\n            case R.id.btn_login :\n            {\n                String un = et_lusername.getText().toString();\n                String pw = et_lusername.getText().toString();\n\n                boolean success = DBManager.verifyUser(un,pw);\n                if (success)\n                {\n                    Intent i = new Intent(MainActivity.this,AdminMenu.class);\n                    startActivity(i);   \n                }\n                else\n                {\n                    Toast.makeText(getApplicationContext(), \"wrong username or password\",Toast.LENGTH_LONG);\n                }\n\n\n            }\n            case R.id.btn_signup:\n            {\n                Intent i = new Intent(MainActivity.this,Signup.class);\n                startActivity(i);   \n            }\n        }\n    }\n\n\n    }\n<\/code><\/pre>\n<p>Signup.java<\/p>\n<pre><code>package com.example.student_project;\n\n\nimport com.example.student_project.*;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.app.Dialog;\nimport android.content.Intent;\nimport android.view.Menu;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.Button;\nimport android.widget.EditText;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\npublic class Signup extends Activity implements OnClickListener {\nprivate Button btn_add;\nprivate EditText et_username;\nprivate EditText et_password;\nprivate EditText et_confirmpassword;\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.signup);\n\n    et_username = (EditText) findViewById(R.id.et_username);\n    et_password = (EditText) findViewById(R.id.et_password);\n    et_confirmpassword = (EditText) findViewById(R.id.et_confirmpassword);\n    btn_add = (Button) findViewById(R.id.btn_add);\n\n    btn_add.setOnClickListener(this);\n}\n\n@Override\npublic boolean onCreateOptionsMenu(Menu menu) {\n    \/\/ Inflate the menu; this adds items to the action bar if it is present.\n    getMenuInflater().inflate(R.menu.main, menu);\n\n    return true;\n}\n\n@Override\npublic void onClick(View v)\n{\n    \/\/ TODO Auto-generated method stub\n    switch(v.getId())\n    {\n    case R.id.btn_add :\n\n        boolean diditwork = true;        \n         try \n         {\n            String username = et_username.getText().toString();\n             String password = et_password.getText().toString();\n             String cpassword = et_confirmpassword.getText().toString();\n\n             if(password.equalsIgnoreCase(cpassword))\n             {\n                 DBManager empty = new DBManager(Signup.this);\n                 empty.open();\n                 empty.createEntry(username,password);\n                 empty.close(); \n\n                 Intent addintent = new Intent(Signup.this,MainActivity.class);\n                    startActivity(addintent);\n             }\n             else \n             {\n                 Toast.makeText(getApplicationContext(), \"passwords does not match\", Toast.LENGTH_LONG);\n             }\n         } \n         catch (Exception e)\n         {\n            diditwork = false;\n            Dialog d = new Dialog(this);\n            String error = e.toString();\n            d.setTitle(\"dang\");\n            TextView tv = new TextView(this);\n            tv.setText(error);\n            d.setContentView(tv);\n            d.show();\n        }\n        \/* finally\n         {\n            if(diditwork)\n            {\n            Dialog d = new Dialog(this);\n            d.setTitle(\"hech ya\");\n            TextView tv = new TextView(this);\n            tv.setText(\"success\");\n            d.setContentView(tv);\n            d.show();\n            }\n\n        } *\/\n\n\n    }\n}\n<\/code><\/pre>\n<p>}<\/p>\n<p>Admin.java<\/p>\n<pre><code>    package com.example.student_project;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.view.Menu;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.Button;\nimport android.widget.EditText;\n\npublic class AdminMenu extends Activity\n{\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState)\n    {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.admin_menu);\n\n\n\n}\n\n@Override\npublic boolean onCreateOptionsMenu(Menu menu)\n{\n    \/\/ Inflate the menu; this adds items to the action bar if it is present.\n    getMenuInflater().inflate(R.menu.main, menu);\n    return true;\n}\n<\/code><\/pre>\n<p>}<\/p>\n<p>logcat error<\/p>\n<pre><code>    W\/ActivityManager(  293): Unbind failed: could not find connection for android.os.BinderProxy@410ce000\n\nI\/Choreographer( 1994): Skipped 55 frames!  The application may be doing too much work on its main thread.\n\nD\/AndroidRuntime( 1994): Shutting down VM\n\nW\/dalvikvm( 1994): threadid=1: thread exiting with uncaught exception (group=0x40a71930)\n\nE\/AndroidRuntime( 1994): FATAL EXCEPTION: main\n\nE\/AndroidRuntime( 1994): java.lang.NullPointerException\n\nE\/AndroidRuntime( 1994):    at com.example.student_project.DBManager.verifyUser(DBManager.java:110)\n\nE\/AndroidRuntime( 1994):    at com.example.student_project.MainActivity.onClick(MainActivity.java:61)\n\nE\/AndroidRuntime( 1994):    at android.view.View.performClick(View.java:4204)\n\nE\/AndroidRuntime( 1994):    at android.view.View$PerformClick.run(View.java:17355)\n\nE\/AndroidRuntime( 1994):    at android.os.Handler.handleCallback(Handler.java:725)\n\nE\/AndroidRuntime( 1994):    at android.os.Handler.dispatchMessage(Handler.java:92)\n\nE\/AndroidRuntime( 1994):    at android.os.Looper.loop(Looper.java:137)\n\nE\/AndroidRuntime( 1994):    at android.app.ActivityThread.main(ActivityThread.java:5041)\n\nE\/AndroidRuntime( 1994):    at java.lang.reflect.Method.invokeNative(Native Method)\n\nE\/AndroidRuntime( 1994):    at java.lang.reflect.Method.invoke(Method.java:511)\n\nE\/AndroidRuntime( 1994):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)\n\nE\/AndroidRuntime( 1994):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)\n\nE\/AndroidRuntime( 1994):    at dalvik.system.NativeStart.main(Native Method)\n\nW\/ActivityManager(  293):   Force finishing activity com.example.student_project\/.MainActivity\n\nW\/WindowManager(  293): Failure taking screenshot for (246x410) to layer 21020\n<\/code><\/pre>\n<ol>\n<li>\n<p>It is because your <code>Cursor c<\/code> is null..and u have&#8217;nt caught the <code>NullPointerException<\/code> in the <code>catch<\/code> block in <code>verifyUser()<\/code>..change the <code>SQLException<\/code> in the catch to <code>Exception<\/code> to catch all the exceptions..<\/p>\n<\/li>\n<li>\n<p>You are calling <code>DBManager.verifyUser(un,pw);<\/code> which reqires database to be opened. Probably <code>ourDatabase<\/code> variable is <code>Null<\/code> and you got handled exception when trying to get cursor and unhandled when trying to access null cursor.<\/p>\n<p>Probably you do not need <code>verifyUser<\/code> to bee static as you need to call <code>DBManager.open<\/code> before it<\/p>\n<\/li>\n<\/ol>\n<p id=\"rop\"><small>Originally posted 2013-11-26 18:03:36. <\/small><\/p>","protected":false},"excerpt":{"rendered":"<p>After creating inserting username and password signup.java , my app suddenly stop when I login ( in emulator) , and i moves to signup page in (bluestack). Not sure if data is actually being entered in database in signing up. DBManager.java package com.example.student_project; import com.example.student_project.*; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1522","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/1522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=1522"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/1522\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=1522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=1522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=1522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}