2013-03-10 107 views
0

UPDATE !!!!我想使用sql select语句选择一个指定的查询与where子句这样“SELECT * FROM mytable WHERE name ='Name'”;从sqlite数据库中选择指定列并显示到文本视图

但我不成功,这是我的代码工作,但不包含任何where子句。 谢谢。

public String Read(String name) 
{ 
    String[] columns = new String[]{SQLiteHelper.COLUMN_NPM, SQLiteHelper.COLUMN_NAME}; 
    String selection = SQLiteHelper.COLUMN_NAME + " = " + name; 
    String[] selectionArgs = {String.valueOf(name)}; 
    Cursor cursor = database.query(SQLiteHelper.TABLE_MHS, columns, selection, selectionArgs, null, null, null); 


    cursor.moveToFirst(); 
    String index_name = cursor.getString(cursor.getColumnIndex(SQLiteHelper.COLUMN_NAME)); 
    return index_name; 
} 

我把我的数据库源,扩展sqliteopenhelper的代码,但我得到了下面的日志猫错误

03-10 11:57:37.000: E/AndroidRuntime(14709): FATAL EXCEPTION: main 03-10 11:57:37.000: E/AndroidRuntime(14709): android.database.sqlite.SQLiteException: no such column: radit: , while compiling: SELECT npm, name FROM Mhs WHERE name = radit 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:53) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1438) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1317) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1271) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1353) 03-10 11:57:37.000: E/AndroidRuntime(14709): at com.crud.MhsDataSource.Read(MhsDataSource.java:55) 03-10 11:57:37.000: E/AndroidRuntime(14709): at com.crud.MainActivity$4.onClick(MainActivity.java:76) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.view.View.performClick(View.java:2533) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.view.View$PerformClick.run(View.java:9320) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.os.Handler.handleCallback(Handler.java:587) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.os.Handler.dispatchMessage(Handler.java:92) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.os.Looper.loop(Looper.java:150) 03-10 11:57:37.000: E/AndroidRuntime(14709): at android.app.ActivityThread.main(ActivityThread.java:4389) 03-10 11:57:37.000: E/AndroidRuntime(14709): at java.lang.reflect.Method.invokeNative(Native Method) 03-10 11:57:37.000: E/AndroidRuntime(14709): at java.lang.reflect.Method.invoke(Method.java:507) 03-10 11:57:37.000: E/AndroidRuntime(14709): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 03-10 11:57:37.000: E/AndroidRuntime(14709): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 03-10 11:57:37.000: E/AndroidRuntime(14709): at dalvik.system.NativeStart.main(Native Method)

我已经得到了答案,这是我的SQLite代码选择参数

public String Read(String name) 
{ 
    String[] columns = new String[]{SQLiteHelper.COLUMN_NPM, SQLiteHelper.COLUMN_NAME}; 
    String selection = SQLiteHelper.COLUMN_NAME + " like ? "; 
    String[] selectionArgs = {name}; 
    Cursor cursor = database.query(SQLiteHelper.TABLE_MHS, columns, selection, selectionArgs, null, null, null); 


    cursor.moveToFirst(); 
    String index_name = cursor.getString(cursor.getColumnIndex(SQLiteHelper.COLUMN_NAME)); 
    String index_npm = cursor.getString(cursor.getColumnIndex(SQLiteHelper.COLUMN_NPM)); 
    String result = index_npm + " " + index_name; 
    return result; 
} 

回答

1

where子句是3d参数,其中args是第4个参数。

你应该这样做:

public String Read(String name) 
{ 
    String[] columns = new String[]{SQLiteHelper.COLUMN_NPM, SQLiteHelper.COLUMN_NAME}; 
    where = "Name=?"; 
    String[] whereArgs = new String[]{name}; 

    Cursor cursor = database.query(SQLiteHelper.TABLE_MHS, columns, where, whereArgs, null, null, null); 

    //.... 
} 

检查www.vogella.com/articles/AndroidSQLite/article.html的细节

相关问题