为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 SQLite SUM() 函数?

如何使用 SQLite SUM() 函数?

慕工程0101907 2021-12-30 20:25:51
我的问题最近,我通过 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;


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 292 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号