2017-08-07 24 views
-1

Android StudioでSQLiteを使用してクエリを作成しようとしていますが、大きな問題があります。クエリ内のwhere句

package com.example.lyubo.database; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

/** 
* Created by LYUBO on 2017/08/07. 
*/ 

public class DatabaseHelper extends SQLiteOpenHelper { 
    public static final String DATABASE_NAME = "Student.db"; 
    public static final String TABLE_NAME = "student_table"; 
    public static final String COL_1 = "ID"; 
    public static final String COL_2 = "NAME"; 
    public static final String COL_3 = "SURNAME"; 
    public static final String COL_4 = "MARKS"; 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 

    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,SURNAME TEXT,MARKS INTEGER)"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); 
     onCreate(db); 
    } 



    public Cursor getAllData() { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor res = db.rawQuery("select * from "+TABLE_NAME + " WHERE " + COL_2 + " = Mike",null); 
     return res; 
    } 
} 

私が知っている問題は、私のクエリ内であるという事実のために:私はここにselect * from Student.db where name = Mike

にしようとしています
は 私のコードの抜粋です。私は何かが不足しているかどうかはわかりません。

助けてください。ありがとうございました。

+2

あなたは文字列の比較のために引用する必要があります... = 'マイクの – ednincer

+0

OMG!私はちょうど2時間を無駄にした。 ありがとうございました。問題が解決しました! – Lyubomir

+0

ユーザーの入力に基づいて表示したい場合は、マイクの部分を置き換えて、次のように記述します: カーソルres = db.rawQuery( "select * from" + TABLE_NAME + "WHERE" + COL_2 + "=" + mainAct.editName.getText()。toString()、null); – Lyubomir

答えて

1

使用res.moveToFirst() なぜですか? 基本的にはカーソルはどこに行くのかわかりません(実際の言葉にどのように置くか分かりません)ので、リストの中に置く必要があります。

は、余分な空白がないことを確認するために、文字列をトリミングしてみてください。

Cursor res = db.rawQuery("select * from "+TABLE_NAME.trim()+" WHERE "+COL_2.trim()+" = Mike" , null); 
+0

ありがとうございます。 \t もし私がユーザーの入力に基づいてそれを表示したいのであれば、私はMikeの部分を置き換えて次のように書くでしょう:Cursor res = db.rawQuery( "select * from" + TABLE_NAME + "WHERE" + COL_2 + "=" + " mainAct.editName.getText()。toString() "、null); – Lyubomir

+0

'toString()の後にトリムすることを忘れないでください。 – Dennis

+0

そして他人を助けるためにそれを親切にマークしてください!ありがとう! – Dennis