[英]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_profile
和email
在上述rawQuery中被突出显示为错误? 我缺少进口商品吗? 干杯
user_pofile
(那里是typo)和email
都不用双引号引起来,因此它们被视为Java变量名称,并且您的代码中没有此类名称的变量。
如果要使用变量,请用DATABASE_TABLE
和USER_ID
替换,或者只需将user_profile
和email
放在双引号中。
此外,您需要在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.