如何使用SQLite SUM()函数?

时间:2018-11-05 15:18:24

标签: java android sqlite android-sqlite sqliteopenhelper

*

我的问题

最近,我通过android studio运行了一些Java代码[Open Helper],它给出了以下错误: 我有一个带有android(java代码)的登录页面,只是我的问题,当必须将密码作为字符串放置的时间时,这将是正确的。但是如果输入了数字密码,则不会正确。     代码SqlOpenHelper

package 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;
    }
}
  

“ password”如果为字符串,则密码为true,但是“ password”如果为字符串,密码(数值)则为true。      *

1 个答案:

答案 0 :(得分:0)

我相信您的主要问题是您的逻辑是相反的。

您基本上是在说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;