- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前正在使用 SQlite 数据库和 Android studio 来构建登录应用程序。我目前正在尝试从数据库中逐行检索数据,并将用户名和密码与用户输入的用户名和密码进行比较。这样做我想找到匹配的用户名和密码,然后输出相应的用户信息。
我不确定最好的方法是什么。我使用了游标,但似乎只能返回数据库中的第一个值。最好使用自动递增的 ID 列并将计数值与 for 循环中的 ID 进行比较吗?或者将整个数据库输出到一个数组中,然后在主 Activity 上使用计数值来梳理数组以获取必要的信息会更好吗?
数据库代码:
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "BIOSECURE";
public static final String TABLE_NAME = "USER";
public static final String COL_1 = "USERNAME";
public static final String COL_2 = "PASSWORD";
public static final String COL_3 = "FIRSTNAME";
public static final String COL_4 = "SECONDNAME";
public static final String COL_5 = "FINGERPRINT";
public static final String COL_6 = "FACE";
//基础数据库
public DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE USER ( USERNAME TEXT PRIMARY KEY, PASSWORD TEXT, FIRSTNAME TEXT, SECONDNAME TEXT, FINGERPRINT BLOB, FACE BLOB)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS USER");
}
// Inserting into database
public boolean insertUserData (String inputUsername, String inputPassword, String inputFirstName, String inputSecondName)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(COL_1, inputUsername);
cv.put(COL_2, inputPassword);
cv.put(COL_3, inputFirstName);
cv.put(COL_4, inputSecondName);
// contentValues.put(COL_5, inputFingerprint);
// contentValues.put(COL_6, inputFace);
long result = db.insert(TABLE_NAME,null, cv);
db.close();
return result!= -1;
}
// Not working yet
public Cursor CompareUserData () {
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
return cursor;
主要 Activity 代码:
// CHECKING USER LOGIN DETAILS
Cursor cursor = db.CompareUserData();
for (count = 0; count<=cursor.getCount();count++)
{
if (cursor.moveToPosition(count))
{
if (UsernameInput.getText().toString().equals(cursor.getString(0))&&PasswordInput.getText().toString().equals(cursor.getString(1)))
{
passUser = cursor.getString(0);
passPass = cursor.getString(1);
passFirst = cursor.getString(2);
passSecond = cursor.getString(3);
getUser();
getPass();
getFirst();
getSecond();
Toast.makeText(getApplicationContext(), "Successfully logged in", Toast.LENGTH_SHORT).show();
LoginValidation();
}
}
}
if (count > cursor.getCount())
{
Toast.makeText(getApplicationContext(),"Incorrect Username or password",Toast.LENGTH_SHORT).show();
}
最佳答案
游标用于迭代行,但一次只能显示一行,并且必须移动到另一行,这就是为什么它似乎只显示第一行。您调用 cursor.moveToFirst()
,但绝不会调用任何其他 move*()
方法,例如 cursor.moveToNext()
或 光标.moveToPosition()
.
也就是说,如果您想从数据库中获取通过登录提供的用户,获取所有记录并迭代确实不是最好的方法。您的第二个查询(SELECT * FROM user WHERE id =
)是正确的想法。如果我正确理解您的目标,您希望返回一行,然后对照该行检查详细信息。数据库引擎的存在是为了过滤数据以返回您想要的内容,不要在这里重复它的工作。告诉它您想要哪个用户 id
,它就会返回具有该 id
的用户。
关于java - 如何使用 Cursor 逐行返回所有数据库结果 - SQLite 数据库 *工作*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60997205/
我使用 Apache DBCP 来获取连接池,我每次都使用 PoolingDataSource 来获取连接。当我向数据库中插入一个对象时,它工作得很好,但是当我尝试从数据库中选择一个元素时,就会出现问
术语“幽灵光标”有点令人困惑;我的意思是鼠标光标不是由用户控制的,而是由程序创建并完全控制的。 这意味着屏幕上现在有 2 个光标,而不是一个。 屏幕上是否有超过 1 个光标的概念?如果是,有什么方法/
我在关闭 SQLite 类中的 Cursor 时遇到问题。当我在finally block (在DBHelper中)中关闭游标和SQLiteDatabase时,我无法读取其他类中的数据(无法重新打开关
我想连接两个游标,连接后第二个游标的内容也出现在第一个游标中。 正是我的代码, public final Uri AllImage_URI_Int = MediaStore.Images.Media.
.Net 中的 Cursor.Current 和 this.Cursor(this 是 WinForm)之间有区别吗?我一直使用 this.Cursor 并且运气很好,但我最近开始使用 CodeRus
我在 R Studio 中使用 Cobalt 编辑器主题,我通过更改相应的 .cache.css 文件对其进行了微调。背景颜色是深色的(我的选择),但文本光标(鼠标指针)也是深色的,所以很难看清。我在
我做了以下事情: import MySQLdb as mdb con = mdb.connect(hostname, username, password, dbname) cur = con.cur
当我通过 psql 客户端运行此 SQL 查询时,它会运行几秒钟(~90 秒,这是正常的,因为它是一个巨大的表)并返回,然后我可以检查我的行是否已成功插入。 SELECT merge_data('89
我是用pymongo来查询一个地区的所有元素(其实是在一张 map 上查询一个地区的所有 field )。我之前使用 db.command(SON()) 在球形区域中搜索,它可以返回一个字典,并且在字
intellij 调试:运行到光标处,忽略光标前的所有断点。有办法吗?假设光标前有很多断点,不方便一一禁用。 Line10 Line500 <-- cursor 最佳答案 Force Run
看看这两个 python 代码片段, conn = MySQLdb.connect(c['host'], c['user'], c['password'], c['db']) cur = conn.c
我有 2 个来自 SQLite 数据库中不同表的游标。我正在尝试将来自两个游标的数据放入一个 ListView 但每个游标的数据格式不同。 我考虑的是使用 MergeCursor 来组合两个游
许多 RDBMS 支持某种“CURSOR”类型。这些类型在从存储过程返回时最有用。 Oracle 中的示例: TYPE t_cursor_type IS REF CURSOR; CREATE PROC
我的应用程序结合了 Swing 和 JavaFX。我希望所有组件都使用相同的光标。 从 AWT 游标创建 JavaFX 游标的最佳方法是什么? 编辑:有一个名为 javafx.embed.swing.
我在这里遇到问题: conn = psycopg2.connect(conn_string) cursor = conn.cursor() sql = """ SELECT DISTINCT
我想检索我的 Sqlite3 数据库的前 100 行: connection = sqlite3.connect('aktua.db') cursor = connection.cursor() pr
我目前正在使用 libclang 和 C++ 编写一个简单的克隆检测器。 程序使用结构存储游标,包含指向翻译单元的指针和通过调用 clang_getCursorLocation(cursor) 获得的
我有一个 Observable返回单个 Cursor实例(Observable)。我正在尝试利用 ContentObservable.fromCursor获取 onNext 中每个游标的行回调。 我想
许多 RDBMS 支持某种“CURSOR”类型。这些类型在从存储过程返回时最有用。 Oracle 中的示例: TYPE t_cursor_type IS REF CURSOR; CREATE PROC
我正在为可视化工具编写拖动系统。单击并拖动时,它会移动您在窗口中看到的内容。当鼠标碰到面板的边缘时,我开始重新定位光标,使其永远不会离开框。如果光标在框内,它会跟踪光标所在的虚拟位置。这部分代码工作正
我是一名优秀的程序员,十分优秀!