如何使用 SQLite SUM() 函数?

我的问题

最近,我通过 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;

    }

}

“密码”如果是字符串,则密码为真,但“密码”如果是字符串,则密码(数字)则不为真... *


慕工程0101907
浏览 294回答 1
1回答

凤凰求蛊

我相信你的主要问题是你的逻辑颠倒了。你基本上是说使用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;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java