2016-04-07 3 views
0

Ich bin eine App erstellen, wo der Benutzer Datenbank mit Eingaben von Benutzern über Edittext-Boxen zur Verfügung gestellt werden kann. Ich übergebe sie an die Datenbankdatei als String-Argument abfragen und ich erhalte den Code error.attachingAbfrage der Datenbank mit einer Variablen übergeben als ein Argument in SQLite Android

Dies ist auf die Schaltfläche klicken Zuhörer und auton ist Autotextview

b1.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 

MyDatabase m =new MyDatabase(getActivity()); 
Cursor c=m.searchname(autoname.getText().toString()); 

simpleCursorAdapter = new SimpleCursorAdapter(getActivity(),  R.layout.custom_layout_row, c, 
        new String[]{"_id", "name", "phone", "email", "subject"}, 
        new int[]{R.id.rownumber, R.id.rowname, R.id.rowphone, R.id.rowmail, R.id.rowsubject}, 0); 
      listView.setAdapter(simpleCursorAdapter); 


     } 
    }); 

Dies ist der Code in Mydatabase.java (Datenbank-Datei)

public Cursor searchname(String argument) { 
    Cursor cursor = null; 
    cursor = s.query("student", null, "name=?", new String[]{argument}, null, null, null); 


    return cursor; 
    } 

Ich erhalte Fehler in der Abfrage-String

wenn ich rohe Abfrage

Cursor cursor = db.rawQuery("select * from student where name =?", new String[]{argument}); 

laufen ich diese Fehlermeldung bekam:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.rawQuery(java.lang.String, java.lang.String[])' on a null object reference at com.techpalle.miniproject.MyDatabase.searchname(MyDatabase.java:107) at com.techpalle.miniproject.SearchFragment$2.onClick(SearchFragment.java:71)

+0

Können Sie rohe Abfrage Cursor Cursor = db.rawQuery ("select * from versuchen läuft Schüler wo Name =? ", neuer String [] {Argument}); –

+0

Es gibt auch Fehler. – Phillen

+0

java.lang.NullPointerException: Versuch, die virtuelle Methode 'android.database.Cursor android.database.sqlite.SQLiteDatabase.rawQuery (java.lang.String, java.lang.String [])' für eine Nullobjekt-Referenz an aufzurufen com.techpalle.miniproject.MyDatabase.searchname (MyDatabase.java:107) bei com.techpalle.miniproject.SearchFragment $ 2.onClick (SearchFragment.java:71) – Phillen

Antwort

0

Der Fehler sagt, Sie versuchen rawQuery auf null laufen Objekt :) Das bedeutet, dass Ihr s ist null :) Sie sollten eine beschreibbare Datenbankreferenz erhalten, bevor Sie irgendeine Abfrage auf dem ausführen konnten :)

So können Sie versuchen, diese :)

public Cursor searchname(String argument) { 
    Cursor cursor = null; 
    SQLiteDatabase s = this.getWritableDatabase(); 
    Cursor cursor = s.rawQuery("select * from student where name =?", new String[]{argument}); 
    return cursor; 
} 

Lemme wissen, wenn Sie immer noch das Problem :) Glücklich Codierung Kumpel haben :)

+0

Vielen Dank. Es hat gut funktioniert. – Phillen

+0

@Phillen Immer willkommen Kumpel :) Froh ich könnte helfen :) –

+0

this.getWritableDatabase(); hatte auch Probleme, so Datenbank Helper-Objekt anstelle von diesem verwendet .. und es hat funktioniert. Vielen Dank noch einmal – Phillen