2017-06-01 7 views
-3

私はsqlliteデータベースからデータを取得しようとしています。私は従業員用のテーブルを持っています。従業員データを従業員名で取得する必要があります。その後、SQLLiteで検索するandroid java not work

public List getEmpdat(String empname) { 
 

 
     final String TABLE_NAME = "Employee"; 
 

 
     String selectQuery = "SELECT * FROM Employee where EmployeeName="+empname; 
 
     SQLiteDatabase db = this.getReadableDatabase(); 
 
     List<String> li = new ArrayList<String>(); 
 
     Cursor cursor  = db.rawQuery(selectQuery, null); 
 
     String[] data  = null; 
 
     // String name =null; 
 

 
     if (cursor.moveToFirst()) { 
 
      do { 
 
       String name=cursor.getString(2); 
 
       String notes=cursor.getString(3); 
 
       String strdate=cursor.getString(4); 
 
       if(strdate==null) 
 
        strdate = "0"; 
 
       String gate=cursor.getString(6); 
 
       if(gate==null) 
 
        gate = "0"; 
 
       String enddate=cursor.getString(5); 
 
       if(enddate==null) 
 
        enddate = "0"; 
 
       li.add(name); 
 
       li.add(notes); 
 
       li.add(strdate); 
 
       li.add(enddate); 
 
       li.add(gate); 
 

 

 
       // get the data into array, or class variable 
 
      } while (cursor.moveToNext()); 
 
     } 
 
     cursor.close(); 
 
     return li; 
 
    }

と、このような検索の活動でそれを呼び出す:

db=new DataBaseHelper(this); 
 
     data = (GridView) findViewById(R.id.gridView); 
 
     List<String> li = new ArrayList<String>(); 
 
     li = db.getEmpdat(editName.getText().toString()); 
 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, li); 
 
     dataAdapter.setDropDownViewResource(R.layout.activity_search); 
 

 
     dataAdapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, li); 
 
     data.setAdapter(dataAdapter);

が、logcatから問題が起きている問題は 「java.lang.RuntimeExceptionありますされています。活動ComponentInfo {com.example.university.newapp/com.example.university.newapp.SearchActivityを開始することができません}:android.database.sqlite.SQLiteException:近い "=":構文エラー(コード1):、コンパイル中:SELECT * FROM社員どこEmployeeName = "いずれかがこの問題にヘルプを提供することができます ください

+0

文字列の値は常にrawqueryで ''必要です。selectQuery = "SELECT * FROM Employee where EmployeeName = '" + empname + "'"; – Pavan

答えて

0

てみてください例外が発生した行を変更し、動作しているかどうかを確認します。

String selectQuery = "SELECT * FROM Employee where EmployeeName='"+empname+"'"; 
+1

すべて正常に機能しています –

0

あなたがそのように、照会でプレースホルダを使用することができ、

String query = String.format("SELECT * FROM Employee WHERE EmployeeName='%s'",empname); 

あなたはそれがプレースホルダとして機能して、変数の値を照会するときにプレースホルダに挿入され、'%s'が表示されます。 したがって、Stringのプレースホルダには'%s'を使用できます。Digitには、'%d'を使用できます。これが役立つことを願っています。