繁体   English   中英

SQLite rawQuery错误

[英]SQLite rawQuery error

我是SQLite的新手。 我有一个SQLite数据库,其中包含这样的用户详细信息

public static final String USER_ID = "email";
public static final String USER_NAME = "user_name";
public static final String PASSWORD = "password";

public static final String DATABASE_NAME = "molo.db";
public static final String DATABASE_TABLE = "user_profile";
private static final int DATABASE_VERSION = 1;

//SQL to create new database
private static final String DATABASE_CREATE = 
        "create table " + DATABASE_TABLE +
        " (" +
        USER_ID + " TEXT PRIMARY KEY NOT NULL UNIQUE , " +
        USER_NAME + " TEXT NOT NULL, " +
        PASSWORD + " TEXT NOT NULL);"; 

我可以注册新用户,并且可以正常运行,可以看到从模拟器中提取数据库时它可以正常运行。 我现在正在尝试使用存储在数据库中的用户详细信息登录。 我已经搜索并找到了一些解决方案,但是当我尝试实现它时,我收到了错误。 我尝试了这个:

public boolean verification(String Email) throws SQLException
{
    Cursor c = database.rawQuery("SELECT * FROM "+ user_pofile +" WHERE "+ email + "=" + Email, null);
    if (c!=null)
    {
        return true;
    }
    return false; 
}

确定数据库中是否已经存在用户的电子邮件。 谁能解释在正确的表名和列名的情况下,为什么user_profileemail在上述rawQuery中被突出显示为错误? 我缺少进口商品吗? 干杯

user_pofile (那里是typo)和email都不用双引号引起来,因此它们被视为Java变量名称,并且您的代码中没有此类名称的变量。

如果要使用变量,请用DATABASE_TABLEUSER_ID替换,或者只需将user_profileemail放在双引号中。

此外,您需要在SQL中用单引号将字符串文字引起来,或者使用变量。

例如,

rawQuery("SELECT * FROM user_profile WHERE email = ? ", new String[] { Email })

而且, Cursor不会为null,并且检查null不会真正起作用。 要查看查询是否匹配任何内容,请检查moveToFirst()返回true

查询末尾的字符串Email没有用单引号引起来,普通查询的语法为:

SELECT * FROM usertable WHERE userID = '123'

因此您必须用两个单引号将Email变量括起来: "'"+Email+"'"

尝试这个 :

database.rawQuery("SELECT * FROM "+ user_pofile +" WHERE "+ email + "=" + "'"+Email+"'", null);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM