2013-08-16 111 views
-1

我创建了一个表,其中有三列id,namediscipline。 我想找到给定discipline的学生姓名。Android SQLite的rawQuery()方法

以下是我的方法:

String findstudent(String disc){ 
    SQLiteDatabase sqLiteDatabase = this.getReadableDatabase(); 
    String find = "SELECT * FROM "+ TABLE_STUDENTS + " WHERE "+KEY_DISCIPLINE +" = " +disc ; 
    Cursor cursor = sqLiteDatabase.rawQuery(find,null); 
    cursor.moveToFirst(); 
    String found =cursor.getString(1); 

    return found; 
} 

当我使用它,应用程序停止工作。

+2

如果您的应用程序停止工作,然后在这里检查和后logcat的输出。 –

+0

首先,在完成之后调用cursor.close()。 – Matt

+0

thnx,仍然没有工作.. – pavan

回答

0

试试这个:

String findstudent(String disc){ 

    Cursor cursor; 

    cursor = this.db.query(TABLE_STUDENTS,null, KEY_DISCIPLINE +" = "+ disc, null, null, null, null,null); 

    cursor.moveToFirst(); 

    String found =cursor.getString(0); 

    return found; 
} 

希望它帮助!

+0

仍然不能正常工作...显示同样的错误... – pavan

+1

发布错误日志。 –

0
public Cursor findstudent(String disc){ 
SQLiteDatabase sqLiteDatabase = this.getReadableDatabase(); 
String[] find = new String[]{ col1,col2,col3};//all fields in db in need 
String order=col1; 
Cursor c=db.query(TABLE_STUDENTS, find, KEY_DISCIPLINE +" = " +disc, null, null, null, order); 
c.moveToFirst(); 
    db.close(); 
    return c; 
} 

在活动中包括这样的:

DataBaseHandler db = new DataBaseHandler(this); 
try { 
     Cursor c = db.displayName(your_disc); 

     startManagingCursor(c); 

     if (!c.moveToFirst()) { 
      System.out.println("!Move " + posnumber); 

     } else { 
      String idname = c.getString(c 
        .getColumnIndex(DataBaseHandler.KEY_NAME)); 
      System.out.println("null:"); 
      System.out.println("Move " + idname); 
      return true; 
     } 
     c.close(); 
     stopManagingCursor(c); 
    } catch (Exception ex) { 
    } 
1

我不知道。但是,你可以试试这个方法

Cursor.moveToFirst(); 

do{ 

//get the data 

String found =cursor.getString(cursor.getColumnIndexOrThrow("COLUMN NAME")); 

}while(Cursor.moveNext); 
1

试试下面的代码:

String find = "SELECT *<enter code here> 
       FROM "+ TABLE_STUDENTS + " 
       WHERE "+KEY_DISCIPLINE +" = '" + disc + "'" ;