我的问题最近,我通过 android studio 运行了我的一些 Java 代码 [Open Helper],它给出了以下错误: 我有一个带有 android(java 代码)的登录页面,当时间必须是密码时,我的问题只是字符串,将是真的。但如果是输入数字密码,就不对了。 代码 SqlOpenHelperpackage com.example.root.sql2;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.support.annotation.Nullable;public class db extends SQLiteOpenHelper { public db(Context context) { super(context, "login.db", null, 1); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("CREATE TABLE USER(ID INTEGER PRIMARY KEY AUTOINCREMENT ,NAME TEXT, PASSWORD TEXT)"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { sqLiteDatabase.execSQL("DROP TABLE IF EXISTS USER"); onCreate(sqLiteDatabase); } public boolean insert (String name , String password){ SQLiteDatabase db = getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("NAME", name); contentValues.put("PASSWORD", password); long ins = db.insert("USER","",contentValues); if (ins == -1) return false; else return true; } public boolean login(String name , String password){ SQLiteDatabase db = getReadableDatabase(); Cursor cursor = db.rawQuery("SELECT * FROM USER WHERE NAME=? AND PASSWORD=?", new String[] {name , password}); cursor.moveToFirst(); if (cursor.getCount()>0) return false; else return true; }}“密码”如果是字符串,则密码为真,但“密码”如果是字符串,则密码(数字)则不为真... *
1 回答
凤凰求蛊
TA贡献1825条经验 获得超4个赞
我相信你的主要问题是你的逻辑颠倒了。
你基本上是说使用if (cursor.getCount()>0) return false;; 如果搜索用户找到该用户,则返回 false。
我相信你想要 if (cursor.getCount()>0) return true;
然而,尽管这不是问题,但使用moveToFirst并没有增加任何用处。此外,您可能会遇到问题,因为您没有关闭光标。
我建议你也许使用:-
public boolean login(String name , String password){
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM USER WHERE NAME=? AND PASSWORD=?", new String[] {name , password});
int count = cursor.getCount();
cursor.close();
return count > 0;
}
这将获取计数,关闭游标,然后如果计数大于 0(找到用户密码组合)则返回 true,否则返回 false;
添加回答
举报
0/150
提交
取消
