Android rawQuery:绑定或列索引超出范围

Android rawQuery:绑定或列索引超出范围,android,database,sqlite,Android,Database,Sqlite,我试图通过以下方式获取用户的姓名: public Cursor GetUser(String username) { return m_dataBase.rawQuery("SELECT * FROM users WHERE name = \' ? \'", new String[] { username }); } 但我得到了一个异常“绑定或列索引超出范围”。我的代码有什么问题?您试图使用一个参数,但这些参数永远不需要被引用。 您的查询实际上搜索名为“?”(带空格)的用户 只需使用“

我试图通过以下方式获取用户的姓名:

public Cursor GetUser(String username)
{
    return m_dataBase.rawQuery("SELECT * FROM users WHERE name = \' ? \'", new String[] { username });
}

但我得到了一个异常“绑定或列索引超出范围”。我的代码有什么问题?

您试图使用一个参数,但这些参数永远不需要被引用。 您的查询实际上搜索名为“
”(带空格)的用户


只需使用
“SELECT*FROM users WHERE name=?”

,因此,在查询中我需要编写
“SELECT*FROM users WHERE name=?”
“SELECT*FROM users WHERE name=?”
(带空格)?符号周围的空格在SQLite中并不重要,您可以使用
name=?
name=,或介于两者之间的任何内容。正是单引号导致了问题
name='?'
(错误)。