Question: Hello Programmers. I'm trying to build and an Android app and managed to get through the main purpose of it however, I'm severely stuck in

Hello Programmers.

I'm trying to build and an Android app and managed to get through the main purpose of it however, I'm severely stuck in successfully implementing an SQLite database to have users login if they already have an account off the SQLite database OR create and register for an account. The relevant classes and XML files for these instructions are correct in my perspective but I believe there's something wrong with my SQLite Query or something wrong when I'd try to look into the Logcat and check for the the registered information from the app user and would display numerous of erros that I find too difficult to debug at this rate.

I will attach the relevant classes, XML files, and what it says at Logcat. Hopefully this way, I can receive the help I'd need as this is severely stopping me from even entering to the main purpose of the app. Your help would be very appreciated. Thank You.

login.java :

package m.rami.psucalculator; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class login extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.login); final EditText etUsername = (EditText)findViewById(R.id.editText); final EditText etPassword = (EditText)findViewById(R.id.editText2); final Button bLogin = (Button)findViewById(R.id.loginbutton); final Button bRegister = (Button)findViewById(R.id.registernowbutton); bRegister.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent registerIntent = new Intent(login.this,RegisterUser.class); login.this.startActivity(registerIntent); } }); } } 

RegisterUser.java :

package m.rami.psucalculator; import android.app.Activity; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class RegisterUser extends Activity { EditText USER_NAME, USER_PASS, CON_PASS; String user_name, user_pass, con_pass; Button REG; Context ctx = this; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register_user); USER_NAME = findViewById(R.id.reg_user); USER_PASS = findViewById(R.id.reg_pass); CON_PASS = findViewById(R.id.con_pass); REG = findViewById(R.id.registerbutton); REG.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { user_name = USER_NAME.getText().toString(); user_pass = USER_PASS.getText().toString(); con_pass = CON_PASS.getText().toString(); if(!(user_pass.equals(con_pass))){ Toast.makeText(getBaseContext(),"Passwords Do Not Match",Toast.LENGTH_LONG).show(); USER_NAME.setText(""); USER_PASS.setText(""); CON_PASS.setText(""); } else{ DatabaseOperations DB = new DatabaseOperations(ctx); DB.putInformation(DB, user_name, user_pass); Toast.makeText(getBaseContext(), "Registration Success", Toast.LENGTH_LONG).show(); finish(); } // method stub } }); } } 

DatabaseOperations.java

package m.rami.psucalculator; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DatabaseOperations extends SQLiteOpenHelper { public static final int database_version = 1; public String CREATE_QUERY = "CREATE TABLE "+TableData.TableInfo.TABLE_NAME+"("+TableData.TableInfo.USER_NAME+" TEXT,"+TableData.TableInfo.USER_PASSWORD+" TEXT );"; public DatabaseOperations(Context context) { super(context, TableData.TableInfo.DATABASE_NAME, null, database_version); Log.d("Database operations", "Database created"); // constructor stub } @Override public void onCreate(SQLiteDatabase sdb) { sdb.execSQL(CREATE_QUERY); Log.d("Database operations","Table created"); // method stub } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // method stub } public void putInformation(DatabaseOperations dop, String name, String pass){ SQLiteDatabase SQ = dop.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(TableData.TableInfo.USER_NAME, name); cv.put(TableData.TableInfo.USER_PASSWORD, pass); SQ.insert(TableData.TableInfo.TABLE_NAME, null,cv); Log.d("Database operations", "One raw inserted"); // inserts data into database } } 

login.xml :

    

activity_register_user.xml

      

Information from Logcat of Errors :

04-20 12:37:32.428 22018-22018/m.rami.psucalculator I/zygote: Not late-enabling -Xcheck:jni (already on) 04-20 12:37:32.437 22018-22018/m.rami.psucalculator W/zygote: Unexpected CPU variant for X86 using defaults: x86 04-20 12:37:32.841 22018-22018/m.rami.psucalculator I/InstantRun: starting instant run server: is main process 04-20 12:37:33.301 22018-22048/m.rami.psucalculator D/OpenGLRenderer: HWUI GL Pipeline 04-20 12:37:33.351 22018-22048/m.rami.psucalculator I/OpenGLRenderer: Initialized EGL, version 1.4 04-20 12:37:33.351 22018-22048/m.rami.psucalculator D/OpenGLRenderer: Swap behavior 1 04-20 12:37:33.352 22018-22048/m.rami.psucalculator W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... 04-20 12:37:33.352 22018-22048/m.rami.psucalculator D/OpenGLRenderer: Swap behavior 0 04-20 12:37:33.428 22018-22048/m.rami.psucalculator D/EGL_emulation: eglCreateContext: 0xa0e052a0: maj 2 min 0 rcv 2 04-20 12:37:33.488 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:33.608 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:36.566 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:36.745 22018-22018/m.rami.psucalculator I/AssistStructure: Flattened final assist data: 2212 bytes, containing 1 windows, 7 views 04-20 12:37:42.827 22018-22023/m.rami.psucalculator I/zygote: Do partial code cache collection, code=23KB, data=27KB 04-20 12:37:42.829 22018-22023/m.rami.psucalculator I/zygote: After code cache collection, code=23KB, data=27KB 04-20 12:37:42.829 22018-22023/m.rami.psucalculator I/zygote: Increasing code cache capacity to 128KB 04-20 12:37:42.902 22018-22023/m.rami.psucalculator I/zygote: Do partial code cache collection, code=30KB, data=56KB 04-20 12:37:42.902 22018-22023/m.rami.psucalculator I/zygote: After code cache collection, code=30KB, data=56KB 04-20 12:37:42.902 22018-22023/m.rami.psucalculator I/zygote: Increasing code cache capacity to 256KB 04-20 12:37:42.902 22018-22023/m.rami.psucalculator I/zygote: JIT allocated 71KB for compiled code of void android.widget.TextView.(android.content.Context, android.util.AttributeSet, int, int) 04-20 12:37:42.902 22018-22023/m.rami.psucalculator I/zygote: Compiler allocated 4MB to compile void android.widget.TextView.(android.content.Context, android.util.AttributeSet, int, int) 04-20 12:37:42.989 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:43.025 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:43.038 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:43.077 22018-22018/m.rami.psucalculator I/AssistStructure: Flattened final assist data: 2060 bytes, containing 1 windows, 6 views 04-20 12:37:45.457 22018-22023/m.rami.psucalculator I/zygote: Do full code cache collection, code=124KB, data=78KB 04-20 12:37:45.460 22018-22023/m.rami.psucalculator I/zygote: After code cache collection, code=122KB, data=53KB 04-20 12:37:47.316 22018-22023/m.rami.psucalculator I/zygote: Do partial code cache collection, code=124KB, data=58KB 04-20 12:37:47.320 22018-22023/m.rami.psucalculator I/zygote: After code cache collection, code=124KB, data=58KB 04-20 12:37:47.320 22018-22023/m.rami.psucalculator I/zygote: Increasing code cache capacity to 512KB 04-20 12:37:51.958 22018-22018/m.rami.psucalculator D/Database operations: Database created 04-20 12:37:51.962 22018-22018/m.rami.psucalculator E/SQLiteLog: (1) table reg_info has no column named user_password 04-20 12:37:51.965 22018-22018/m.rami.psucalculator E/SQLiteDatabase: Error inserting user_password=Rami user_name=ram6077 android.database.sqlite.SQLiteException: table reg_info has no column named user_password (code 1): , while compiling: INSERT INTO reg_info(user_password,user_name) VALUES (?,?) at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58) at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31) at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1472) at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343) at m.rami.psucalculator.DatabaseOperations.putInformation(DatabaseOperations.java:44) at m.rami.psucalculator.RegisterUser$1.onClick(RegisterUser.java:43) at android.view.View.performClick(View.java:6256) at android.view.View$PerformClick.run(View.java:24701) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 04-20 12:37:51.965 22018-22018/m.rami.psucalculator D/Database operations: One raw inserted 04-20 12:37:52.083 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:52.103 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:52.238 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:52.274 22018-22048/m.rami.psucalculator I/chatty: uid=10085(u0_a85) RenderThread identical 1 line 04-20 12:37:52.301 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:52.346 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:52.380 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:37:52.387 22018-22048/m.rami.psucalculator D/OpenGLRenderer: endAllActiveAnimators on 0x8e9f3500 (Button) with handle 0xa0e03740 04-20 12:37:52.808 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:39:33.362 22018-22023/m.rami.psucalculator I/zygote: Do full code cache collection, code=249KB, data=150KB 04-20 12:39:33.363 22018-22023/m.rami.psucalculator I/zygote: After code cache collection, code=245KB, data=134KB 04-20 12:39:44.912 22018-22023/m.rami.psucalculator I/zygote: Do partial code cache collection, code=245KB, data=137KB 04-20 12:39:44.913 22018-22023/m.rami.psucalculator I/zygote: After code cache collection, code=245KB, data=137KB 04-20 12:39:44.913 22018-22023/m.rami.psucalculator I/zygote: Increasing code cache capacity to 1024KB 04-20 12:40:02.461 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:40:02.507 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:40:02.516 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:40:02.564 22018-22018/m.rami.psucalculator I/AssistStructure: Flattened final assist data: 2060 bytes, containing 1 windows, 6 views 04-20 12:40:16.580 22018-22018/m.rami.psucalculator D/Database operations: Database created 04-20 12:40:16.585 22018-22018/m.rami.psucalculator E/SQLiteLog: (1) table reg_info has no column named user_password 04-20 12:40:16.587 22018-22018/m.rami.psucalculator E/SQLiteDatabase: Error inserting user_password=Rami user_name=ram6077 android.database.sqlite.SQLiteException: table reg_info has no column named user_password (code 1): , while compiling: INSERT INTO reg_info(user_password,user_name) VALUES (?,?) at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58) at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31) at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1472) at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343) at m.rami.psucalculator.DatabaseOperations.putInformation(DatabaseOperations.java:44) at m.rami.psucalculator.RegisterUser$1.onClick(RegisterUser.java:43) at android.view.View.performClick(View.java:6256) at android.view.View$PerformClick.run(View.java:24701) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 04-20 12:40:16.588 22018-22018/m.rami.psucalculator D/Database operations: One raw inserted 04-20 12:40:16.648 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:40:16.662 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:40:16.733 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:40:16.774 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:40:16.879 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:40:16.920 22018-22048/m.rami.psucalculator I/chatty: uid=10085(u0_a85) RenderThread identical 1 line 04-20 12:40:17.056 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 12:40:17.067 22018-22048/m.rami.psucalculator D/OpenGLRenderer: endAllActiveAnimators on 0x9c5dc880 (Button) with handle 0xa0e03fa0 04-20 12:40:17.361 22018-22048/m.rami.psucalculator D/EGL_emulation: eglMakeCurrent: 0xa0e052a0: ver 2 0 (tinfo 0xa0e032e0) 04-20 18:32:41.232 22018-22024/m.rami.psucalculator I/zygote: Thread[3,tid=22024,WaitingInMainSignalCatcherLoop,Thread*=0xaa3dac00,peer=0x131c0088,"Signal Catcher"]: reacting to signal 3 04-20 18:32:41.375 22018-22024/m.rami.psucalculator I/zygote: Wrote stack traces to '/data/anr/traces.txt'

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!