public boolean checkUser(String username, String password) { String[] columns = {COL_1}; SQLiteDatabase db = getReadableDatabase(); String selection = COL_2 + "=?" + " and " + COL_3 + "=?"; String[] selectionArgs = {username, password}; Cursor cursor = db.query(TABLE_NAME, columns, selection, selectionArgs, null, null, null); int count = cursor.getCount(); cursor.close(); db.close(); if (count > 0) return true; else return false; }
时间: 2024-01-15 07:03:14 浏览: 79
这段代码是一个查询用户信息的方法,检查用户名和密码是否匹配。它首先定义了一个字符串数组columns,其中包含了表中第一列的名称COL_1。然后获取可读的数据库实例。接下来,定义一个字符串selection作为SQL语句的WHERE子句,用来限定查询结果。这里用两个占位符"?", 分别代表用户名和密码。然后定义一个字符串数组selectionArgs,用于替换占位符。这里将传入的用户名和密码作为参数。接着调用query()方法来执行查询,传入表名、列名数组、WHERE子句、占位符替换数组、分组方式、分组过滤条件、排序方式等参数,返回一个Cursor对象。最后,关闭Cursor和数据库,并根据查询结果返回一个布尔值。如果查询结果的行数大于0,则说明用户名和密码匹配,返回true,否则返回false。
相关问题
package com.example.myapplication; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import androidx.annotation.Nullable; import com.example.myapplication.pass.User; public class MYsqliteopenhelper extends SQLiteOpenHelper { private static final String DB_NAME="MYsqlite.db"; private static final String create_users="create table users(name varchar(32) primary key,password varchar(32));"; private static final String create_int="create table int(name varchar(32)primary key,content varchar);"; public MYsqliteopenhelper(@Nullable Context context) { super(context, DB_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL(create_users); sqLiteDatabase.execSQL(create_int); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } public long register(User u){ SQLiteDatabase db=getWritableDatabase(); ContentValues cv=new ContentValues(); cv.put("name",u.getName()); cv.put("password",u.getPassword()); long users=db.insert("users",null,cv); return users; } public boolean change(String name){ SQLiteDatabase db1=getReadableDatabase(); boolean result=false; Cursor users =db1.query("users",null,"name like ?",new String[]{name},null,null,null); if(users !=null){ while (users.moveToNext()){ return result; } } return false; } public boolean login(String name,String password){ SQLiteDatabase db1=getReadableDatabase(); boolean result=false; Cursor users =db1.query("users",null,"name like ?",new String[]{name},null,null,null); if(users !=null){ while (users.moveToNext()){ String password1=users.getString(1); result=password1.equals(password); return result; } } return false; } }
这是一个用于管理 SQLite 数据库的帮助类 `MYsqliteopenhelper`,它继承了 `SQLiteOpenHelper` 类,用于创建和升级数据库。在这个类中,有以下几个方法:
1. 构造方法:用于创建一个数据库实例,并指定数据库名称及版本号。
2. `onCreate` 方法:用于创建数据库和数据表,它会在数据库第一次被创建时执行。
3. `onUpgrade` 方法:用于升级数据库,它会在数据库版本升级时执行。
4. `register` 方法:用于向数据库中添加用户信息。它接收一个 `User` 对象作为参数,把用户的用户名和密码插入到 `users` 表中。
5. `change` 方法:用于判断用户名是否存在。如果存在,返回 `true`,否则返回 `false`。
6. `login` 方法:用于验证用户的登录信息。它接收用户名和密码作为参数,从 `users` 表中查询该用户的密码信息,如果密码匹配,则返回 `true`,否则返回 `false`。
其中,以下几个变量和常量有以下含义:
- `DB_NAME`:数据库名称。
- `create_users`:创建 `users` 表的 SQL 语句。
- `create_int`:创建 `int` 表的 SQL 语句。
- `name`:用户名。
- `password`:密码。
- `users`:对应 `users` 表的一个 `Cursor` 对象。
- `db` 和 `db1`:用于获取数据库实例的 `SQLiteDatabase` 对象。`getWritableDatabase()` 和 `getReadableDatabase()` 方法都可以获取到该对象,区别在于当数据库不可写入时,`getReadableDatabase()` 方法会返回只读的 `SQLiteDatabase` 对象,而 `getWritableDatabase()` 方法会抛出异常。
public class UserTableHelper { //注册 public void Register(DBHelper dbHelper,String username,String password,String passlock, String passkey,String role,String collection){ SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("username",username); values.put("password",password); values.put("passlock",passlock); values.put("passkey",passkey); values.put("role",role); values.put("collection",collection); db.insert("user",null,values); db.close(); } //检测用户名是否重复 public boolean CheckUsername(DBHelper dbHelper,String username){ SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("user",new String[]{"username"},"username=?", new String[]{username + ""},null,null,null); int count = cursor.getCount(); boolean result; if (count == 0){ result = true; }else { result = false; } db.close(); return result; } //登录 public boolean Login(DBHelper dbHelper,String username,String password){ SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("user",new String[]{"username","password"}, "username=? and password=?",new String[]{username + "",password + ""}, null,null,null); int count = cursor.getCount(); boolean result; if (count != 0){ result = true; }else { result = false; } db.close(); return result; }解释每一行代码
这是一个名为 UserTableHelper 的类,它包含了三个方法:Register、CheckUsername 和 Login。这些方法都需要传入一个 DBHelper 对象作为参数,以便与数据库进行交互。
方法 Register 用于将用户注册信息保存到数据库中。它接受多个参数,包括用户名、密码、密码锁、密码键、角色和集合等。首先,它通过 dbHelper 对象获取一个可写的 SQLiteDatabase 对象。然后,它创建一个 ContentValues 对象,并将所有用户信息添加到其中。最后,它调用 db.insert() 方法将这些信息插入到名为 "user" 的表中,并关闭数据库连接。
方法 CheckUsername 用于检查用户名是否已经存在于数据库中。它接受用户名作为参数,并通过 dbHelper 对象获取一个可读的 SQLiteDatabase 对象。然后,它使用 db.query() 方法查询名为 "user" 的表,检查是否存在与该用户名相同的记录。如果记录数量为 0,则返回 true;否则返回 false。
方法 Login 用于验证用户登录信息是否正确。它接受用户名和密码作为参数,并通过 dbHelper 对象获取一个可读的 SQLiteDatabase 对象。然后,它使用 db.query() 方法查询名为 "user" 的表,检查是否存在与该用户名和密码相匹配的记录。如果记录数量不为 0,则返回 true;否则返回 false。
阅读全文