Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite rawquery_Android_Sqlite - Fatal编程技术网

Android SQLite rawquery

Android SQLite rawquery,android,sqlite,Android,Sqlite,我在assets目录中的DB上的Eclipse上遇到一个rawquery错误。数据库是用表和数据“预加载”的,SQL字符串(第一条注释行)在SQLite DB浏览器中工作。当我将SQL字符串复制到代码并修改以删除引号时,它会显示错误。下面的代码来自“标准”公共类DataBaseHelper扩展SQLiteOpenHelper{。我是android/java新手,希望得到任何帮助或建议 public Cursor getAllSectionDescriptions( String

我在assets目录中的DB上的Eclipse上遇到一个rawquery错误。数据库是用表和数据“预加载”的,SQL字符串(第一条注释行)在SQLite DB浏览器中工作。当我将SQL字符串复制到代码并修改以删除引号时,它会显示错误。下面的代码来自“标准”公共类DataBaseHelper扩展SQLiteOpenHelper{。我是android/java新手,希望得到任何帮助或建议

        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,否则将引发异常