2017-06-01 118 views
-3

我試圖從sqllite數據庫中獲取數據。我有員工表,並且需要通過員工姓名獲得員工數據我已經完成了我在數據庫幫助器中創建瞭如下函數:在SQLLite中搜索android java不工作

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 Employee其中EmployeeName = 「 」可以提供任何幫助,請問

+0

字符串值總是需要''在rawquery中,所以使用String 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',它作爲佔位符和您的變量值將被插入查詢時,佔位符。 因此,'%s'可用於String佔位符,如果您想要Digit,則可以使用'%d'。我希望這對您有所幫助。