Șterge articol din baza de date SQLite și actualizare ListView

voturi
0

Sunt încercarea de a șterge un element dintr-un ListView prin intermediul unui meniu de dialog. Atunci când un element este selectat, am retrive numele elementului și să dea o opțiune pentru a șterge elementul dat numele elementului. Dar când încerc să-l ștergeți și reîncărcați ListView (vezi imaginea). I a lua erori pe declarațiile SQL.

poza: http://i.imgur.com/zkmadGf.png

Aici este metoda de ștergere:

termList.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
        final String termName = ((TextView) view.findViewById(R.id.tv_termName)).getText().toString();
        builder.show();
        builder.setAdapter(menAdapter, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String term = termName;
                switch (which) {
                    case 0:
                        Context c = MainActivity.this;
                        Intent i = new Intent(c, CourseListActivity.class);
                        i.putExtra(termName, term);
                        c.startActivity(i);
                        break;
                    case 1:
                        db.delete(termTable, name =  + term, null);
                        termListAdapter.notifyDataSetChanged();
                }
            }
        });
    }
});

Aici este fișierul jurnal:

04-08 14:27:00.190: E/AndroidRuntime(26451): FATAL EXCEPTION: main
04-08 14:27:00.190: E/AndroidRuntime(26451): android.database.sqlite.SQLiteException: near Name: syntax error: , while compiling: DELETE FROM termTable WHERE name = Term Name: hello
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.database.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:260)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:84)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1759)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at com.dagonar.achievegpa.MainActivity$2$1.onClick(MainActivity.java:89)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:938)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.widget.AdapterView.performItemClick(AdapterView.java:292)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.widget.AbsListView.performItemClick(AbsListView.java:1485)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2941)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.widget.AbsListView$1.run(AbsListView.java:3658)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.os.Handler.handleCallback(Handler.java:605)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.os.Looper.loop(Looper.java:137)
04-08 14:27:00.190: E/AndroidRuntime(26451):    at android.app.ActivityThread.main(ActivityThread.java:4464)

Sper că ai putea să mă ajute să găsească o soluție.

Întrebat 08/04/2014 la 16:30
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Probabil scopul tau este de a executa următoarea declarație:

DELETE FROM termTable WHERE name = 'hello'

in loc de:

DELETE FROM termTable WHERE name = Term Name: hello

Deci, codul corect va fi:

String term = termName.split(":")[1].trim();
switch (which) {
    case 0:
        Context c = MainActivity.this;
        Intent i = new Intent(c, CourseListActivity.class);
        i.putExtra("termName", term);
        c.startActivity(i);
        break;
    case 1:
        db.delete("termTable", "name = '" + term + "'", null);
        termListAdapter.notifyDataSetChanged();
}

Și vă rugăm să împartă etichete și valoare în 2 TextViews, nu pune totul în interiorul unul TextView.

Publicat 08/04/2014 la 17:14
sursa de către utilizator

voturi
0

Având în vedere valoarea pe termen ca "Denumire Termen: Buna ziua", ceea ce ai nevoie este db.delete ( "termTable", "name =" + " '+ + termenul'", null);

Publicat 08/04/2014 la 18:15
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more