validate user name and password from existing data base when click login button android -
dear have 2 buttons in main view "signup" , "login" when click signup next view loaded 2 text box field "user name" , "password" , submitt button when click on button sending data data base , return main activity using finish () in on buttonclick() event. when click on login button opens next view user name , password when fill , click submitt button force close ..i use validate() method in content provider database...so not able find bug pls see code , me pls...thanks in adv.and 1 question how check wheather data inserted in database or not ...
my content provider class is
public class mycontentprovider extends contentprovider { private sqlitedatabase sqldb; public databasehelper dbhelper; private static final string database_name = "users.db"; private static final int database_version = 1; private static final string table_name = "user"; private static final string tag = "mycontentprovider"; public static class databasehelper extends sqliteopenhelper { //public string user_name; //public string passwords; databasehelper(context context) { super(context, database_name, null, database_version); } @override public void oncreate(sqlitedatabase db) { // create table store user names db.execsql("create table " + table_name + "( _id integer primary key autoincrement, user_name text,passwords text);"); } public boolean validateuser(string username, string password){ cursor c = getreadabledatabase().rawquery( "select * " + table_name + " " + myusers.user.user_name + "='" + username +"'and "+myusers.user.pass+"='"+password+"'" , null); if (c.getcount()>0) return true; return false; } @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { db.execsql("drop table if exists " + table_name); oncreate(db); } } @override public int delete(uri uri, string s, string[] as) { return 0; } @override public string gettype(uri uri) { return null; } @override public uri insert(uri uri, contentvalues contentvalues) { // database insert records sqldb = dbhelper.getwritabledatabase(); // insert record in user table , row number of inserted record long rowid = sqldb.insert(table_name, "",contentvalues); if (rowid > 0) { uri rowuri = contenturis.appendid( myusers.user.content_uri.buildupon(), rowid).build(); getcontext().getcontentresolver().notifychange(rowuri, null); return rowuri; } throw new sqlexception("failed insert row " + uri); } @override public boolean oncreate() { dbhelper = new databasehelper(getcontext()); return (dbhelper == null) ? false : true; } @override public cursor query(uri uri, string[] projection, string selection, string[] selectionargs, string sortorder) { sqlitequerybuilder qb = new sqlitequerybuilder(); sqlitedatabase db = dbhelper.getreadabledatabase(); qb.settables(table_name); cursor c = qb.query(db, projection, selection, null, null, null, sortorder); c.setnotificationuri(getcontext().getcontentresolver(), uri); return c; } @override public int update(uri uri, contentvalues contentvalues, string s, string[] as) { return 0; }
myuser class is
public class myusers { public static databasehelper dbhelper; static final string table_name = "user"; public static final string authority = "com.linkwithweb.providers.mycontentprovider"; // basecolumn contains _id. public static final class user implements basecolumns { public static final uri content_uri = uri .parse("content://com.linkwithweb.providers.mycontentprovider"); // table column public static final string user_name = "user_name"; public static final string pass = "pass"; }
loginpage class is:
public class loginpage extends activity { // databasehelper dbhelper; databasehelper dbhelper=new databasehelper(loginpage.this); @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.loginpage); button button3 = (button) findviewbyid(r.id.button3); button3.setonclicklistener(new view.onclicklistener() { public void onclick(view view) { edittext etext = (edittext) findviewbyid(r.id.edittext); string name=( etext.gettext().tostring()); edittext etext2 = (edittext) findviewbyid(r.id.edittext3); string password =( etext2.gettext().tostring()); log.i("saurabh ..",name); if (dbhelper.validateuser(name,password)) { intent = new intent(loginpage.this,welcome.class); startactivity(i); } //else //toast.maketext(getbasecontext(), "wrong username/password", toast.length_long).show(); } }); }
signup page is:::
public class signform extends activity { myadapter madapter=null; databasehelper dbhelper; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.loginform); button button1 = (button) findviewbyid(r.id.button1); button1.setonclicklistener(new view.onclicklistener() { public void onclick(view view) { edittext etext = (edittext) findviewbyid(r.id.edittext1); string names=( etext.gettext().tostring()); edittext etext2 = (edittext) findviewbyid(r.id.edittext3); string password =( etext2.gettext().tostring()); **madapter.insertrecord(names,password)**; finish(); } }); madapter = new myadapter(this); } class myadapter extends baseadapter implements onclicklistener { private layoutinflater inflater; public myadapter(context ctx) { super(); this.inflater = (layoutinflater) ctx.getsystemservice(context.layout_inflater_service); } public void insertrecord(string unames,string passw) { contentvalues values = new contentvalues(); values.put(myusers.user.user_name, unames); values.put(myusers.user.pass, passw); getcontentresolver().insert(myusers.user.content_uri, values); notifydatasetchanged(); log.i("check data insertion.......", "data inserted succesfully"); }
pls check why login not performed on button click..thanks
pls see log cat after modifying
07-01 12:17:32.911: error/androidruntime(600): uncaught handler: thread main exiting due uncaught exception 07-01 12:17:32.940: error/androidruntime(600): android.database.sqlite.sqliteexception: no such column: pass: , while compiling: select * user user_name='first names'and pass='last names' 07-01 12:17:32.940: error/androidruntime(600): @ android.database.sqlite.sqliteprogram.native_compile(native method) 07-01 12:17:32.940: error/androidruntime(600): @ android.database.sqlite.sqliteprogram.compile(sqliteprogram.java:110) 07-01 12:17:32.940: error/androidruntime(600): @ android.database.sqlite.sqliteprogram.<init>(sqliteprogram.java:59) 07-01 12:17:32.940: error/androidruntime(600): @ android.database.sqlite.sqlitequery.<init>(sqlitequery.java:49) 07-01 12:17:32.940: error/androidruntime(600): @ android.database.sqlite.sqlitedirectcursordriver.query(sqlitedirectcursordriver.java:49) 07-01 12:17:32.940: error/androidruntime(600): @ android.database.sqlite.sqlitedatabase.rawquerywithfactory(sqlitedatabase.java:1220) 07-01 12:17:32.940: error/androidruntime(600): @ android.database.sqlite.sqlitedatabase.rawquery(sqlitedatabase.java:1193) 07-01 12:17:32.940: error/androidruntime(600): @ com.linkwithweb.providers.mycontentprovider$databasehelper.validateuser(mycontentprovider.java:45) 07-01 12:17:32.940: error/androidruntime(600): @ loginapp.page.loginpage$1.onclick(loginpage.java:29) 07-01 12:17:32.940: error/androidruntime(600): @ android.view.view.performclick(view.java:2364) 07-01 12:17:32.940: error/androidruntime(600): @ android.view.view.ontouchevent(view.java:4179) 07-01 12:17:32.940: error/androidruntime(600): @ android.widget.textview.ontouchevent(textview.java:6540) 07-01 12:17:32.940: error/androidruntime(600): @ android.view.view.dispatchtouchevent(view.java:3709) 07-01 12:17:32.940: error/androidruntime(600): @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:884) 07-01 12:17:32.940: error/androidruntime(600): @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:884) 07-01 12:17:32.940: error/androidruntime(600): @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:884) 07-01 12:17:32.940: error/androidruntime(600): @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:884) 07-01 12:17:32.940: error/androidruntime(600): @ com.android.internal.policy.impl.phonewindow$decorview.superdispatchtouchevent(phonewindow.java:1659) 07-01 12:17:32.940: error/androidruntime(600): @ com.android.internal.policy.impl.phonewindow.superdispatchtouchevent(phonewindow.java:1107) 07-01 12:17:32.940: error/androidruntime(600): @ android.app.activity.dispatchtouchevent(activity.java:2061) 07-01 12:17:32.940: error/androidruntime(600): @ com.android.internal.policy.impl.phonewindow$decorview.dispatchtouchevent(phonewindow.java:1643) 07-01 12:17:32.940: error/androidruntime(600): @ android.view.viewroot.handlemessage(viewroot.java:1691) 07-01 12:17:32.940: error/androidruntime(600): @ android.os.handler.dispatchmessage(handler.java:99) 07-01 12:17:32.940: error/androidruntime(600): @ android.os.looper.loop(looper.java:123) 07-01 12:17:32.940: error/androidruntime(600): @ android.app.activitythread.main(activitythread.java:4363)
in loginpage activity called dbhelper.validateuser(name,password).but didn't worked dbhelper.
write
dbhelper=new databasehelper(this);
before calling dbhelper.validateuser();
when created table defined column password.that column name password.but when made query quering like
"select * " + table_name + " " + myusers.user.user_name + "='" + username +"'and "+myusers.user.pass+
the value of myusers.user.pass pass.not password.so had problem.please correct column name.hopefully done
Comments
Post a Comment