如何使用 SQLite SUM() 函数?
How can I use the SQLite SUM() function?
*
我的问题
最近,我 运行 我的一些 Java 代码 [Open Helper] 通过 android 工作室,它给出了以下错误:
我有一个带有 android(java 代码)的登录页面,只是我的问题是时间必须是密码字符串 put 才正确。但如果输入数字密码,则不会。
代码 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" if was string ,password then is true but "password" if was string ,password(numerical) then will not true ...
*
我认为你的主要问题是逻辑颠倒了。
你基本上是在说使用if (cursor.getCount()>0) return false;
;如果搜索用户找到了用户,则 return 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;
}
- 获取计数,关闭游标,然后return如果计数大于 0(找到用户密码组合)则为 true,否则为 false;
*
我的问题
最近,我 运行 我的一些 Java 代码 [Open Helper] 通过 android 工作室,它给出了以下错误: 我有一个带有 android(java 代码)的登录页面,只是我的问题是时间必须是密码字符串 put 才正确。但如果输入数字密码,则不会。 代码 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" if was string ,password then is true but "password" if was string ,password(numerical) then will not true ... *
我认为你的主要问题是逻辑颠倒了。
你基本上是在说使用if (cursor.getCount()>0) return false;
;如果搜索用户找到了用户,则 return 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;
}
- 获取计数,关闭游标,然后return如果计数大于 0(找到用户密码组合)则为 true,否则为 false;