如何在android中使用rawQuery

时间:2011-04-18 18:40:50

标签: android sql

我有一个包含3列的数据库表:id,name,permission。

看起来像这样:

1漫画乐趣

2沟通谈话

3漫画观看

我正在尝试获取漫画名称的权限。我在我的数据库类(AppData.java)中使用以下代码:

private final static String DB_NAME = "safety_app_database"; // the name of our database
private final static int DB_VERSION = 1; // the version of the database

// the names for our database columns
private final String TABLE_NAME = "permissions_table";
private final String ID = "id";
private final String NAME = "name";
private final String PERMISSION = "permission";

和方法

public Cursor getData(){
        return db.rawQuery("SELECT permission FROM permissions_table WHERE name = 'Comics', null);
    }

我在我的主类(safety.java)中调用它。 AppData引用了AppData.java

appData.getData();

这是正确的方法吗?我不确定,每当我尝试调用sql查询时它都会给我一个错误。

4 个答案:

答案 0 :(得分:4)

一个错误的错误,你没有用"关闭sql字符串。试试这个。

return db.rawQuery("SELECT permission FROM permissions_table WHERE name = 'Comics' ", null);

[编辑:JAR属于'Android 2.2',不允许修改其条目中的源附件]

The Jar of this class file blongs to container Android 2.0.1 which does not allow modifications

答案 1 :(得分:0)

不需要原始查询。您可以使用推荐的SQLiteDatabase查询方法之一,它看起来像这样:

db.query("permissions_table", new String [] {permission}, "name = \'Comics\'", null, null, null, null);

答案 2 :(得分:0)

尝试以下方法:

public Cursor getData(String arg) {
   return db.rawQuery("SELECT permission FROM `permissions_table` WHERE name ="+arg, null);
}

然后使用正确的参数调用上面的方法,如下所示:

Cursor cursor;

cursor  =  getData ( "Comic" );

答案 3 :(得分:0)

要执行查询,有两种方法:执行db.rawQuery方法执行db.query方法执行原始查询以检索所有部门:

Cursor getAllDepts()
  {
   SQLiteDatabase db=this.getReadableDatabase();
   Cursor cur=db.rawQuery("SELECT "+colDeptID+" as _id, 
        "+colDeptName+" from "+deptTable,new String [] {});

   return cur;
  }

rawQuery方法有两个参数:字符串查询:select语句String [] selection args:如果在select语句中包含WHERE子句的参数说明查询的结果在Cursor对象中返回。在select语句中,如果表的主键列(id列)的名称不是_id,则必须使用SELECT [Column Name]形式的别名作为_id,因为Cursor对象始终期望主要key列的名称为_id,否则将引发异常。执行查询的另一种方法是使用db.query方法。从视图中选择某个部门中所有员工的查询将如下所示:

public Cursor getEmpByDept(String Dept) {
   SQLiteDatabase db=this.getReadableDatabase();
   String [] columns=new String[]{"_id",colName,colAge,colDeptName};
   Cursor c=db.query(viewEmps, columns, colDeptName+"=?", 
        new String[]{Dept}, null, null, null);
   return c;
  }

db.query具有以下参数:String Table Name:对String []列运行查询的表的名称:查询的投影,即要检索的字符串WHERE子句:where子句, if none pass null String [] selection args:WHERE子句的参数字符串Group by:指定group by子句的字符串String Having:指定HAVING子句的字符串String Order By:字符串Order By by clause