Android SQLite rawquery
我在assets目录中的DB上的Eclipse上遇到一个rawquery错误。数据库是用表和数据“预加载”的,SQL字符串(第一条注释行)在SQLite DB浏览器中工作。当我将SQL字符串复制到代码并修改以删除引号时,它会显示错误。下面的代码来自“标准”公共类DataBaseHelper扩展SQLiteOpenHelper{。我是android/java新手,希望得到任何帮助或建议Android SQLite rawquery,android,sqlite,Android,Sqlite,我在assets目录中的DB上的Eclipse上遇到一个rawquery错误。数据库是用表和数据“预加载”的,SQL字符串(第一条注释行)在SQLite DB浏览器中工作。当我将SQL字符串复制到代码并修改以删除引号时,它会显示错误。下面的代码来自“标准”公共类DataBaseHelper扩展SQLiteOpenHelper{。我是android/java新手,希望得到任何帮助或建议 public Cursor getAllSectionDescriptions( String
public Cursor getAllSectionDescriptions( String DBtable, String source){
//Works in DB: SELECT "Description" FROM "SectionProps" WHERE Source = "UK"
//String q = "SELECT Description FROM SectionProps WHERE Source = UK " ; <= errors in code
String q = "SELECT Description FROM " + DBtable + " WHERE Source = " + source + " "; //<== errors in code
//06-24 16:53:03.373: ERROR/AndroidRuntime(1000): Caused by: android.database.sqlite.SQLiteException: no such table: SectionProps: , while compiling: SELECT Description FROM SectionProps WHERE Source = UK
Cursor mCursor = myDataBase.rawQuery(q, null);
mCursor.moveToFirst();
return mCursor;
}//end cursor
public Cursor getAllSectionDescriptions(字符串数据库表,字符串源){
//在DB中工作:从Source=“UK”所在的“SectionProps”中选择“Description”
//String q=“SELECT Description FROM SectionProps WHERE Source=UK”看起来您必须在对象名称周围加上双引号。因此您需要执行以下操作:
String q = "SELECT \"Description\" FROM \"" + DBtable + "\" WHERE Source = \"" + source + "\" ";
注意,在转义字符“\”前面加上双引号要执行查询,有两种方法:execute db.rawQuery method execute db.query method执行原始查询以检索所有部门:
Cursor getAllDepts()
{
SQLiteDatabase db=this.getReadableDatabase();
Cursor cur=db.rawQuery("SELECT "+colDeptID+" as _id,
"+colDeptName+" from "+deptTable,new String [] {});
return cur;
}
rawQuery方法有两个参数:字符串查询:select语句字符串[]选择参数:如果select语句中包含WHERE子句,则参数将记录查询结果在游标对象中返回。在select语句中,如果主键列(id列)为如果表的名称不是_id,则必须使用形式中的别名选择[Column name]作为_id,因为游标对象始终希望主键列具有名称_id,否则将引发异常