2017-06-25 1 views
1

Ich habe auf SQLite von Head First Android studiert, ich habe versucht, es zu nutzen, aber ich bekomme eine Ausnahme als meine Antwort. Erstellung der Datenbank `Android Datenbank Ausnahme, Datenbank nicht gefunden

package com.example.motorhead_luffy.tv; 
import android.content.ContentValues; 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

/** 
* Created by MOTORHEAD_LUFFY on 10-06-2017. 
*/ 
class Anime extends SQLiteOpenHelper { 
Anime(Context context) 
{super(context,"ANIME",null,1); 
} 
@Override 
    public void onCreate(SQLiteDatabase database) 
{ 
    database.execSQL("CREATE TABLE ANIME (_id INTEGER PRIMARY KEY AUTOINCREMENT, " 
         + "NAME TEXT, " 
         + "DESCRIPTION TEXT, " 
         + "IMAGE INTEGER);"); 
    insertmore(database,"Naruto","A anime about ninjas",R.drawable.narut); 
    insertmore(database,"One Piece","A anime about pirates",R.drawable.one); 
    insertmore(database,"Death Note","A anime about shinigamis",R.drawable.deathnote); 

} 
@Override 
    public void onUpgrade(SQLiteDatabase database, int n,int o) 
{ 
if(o<1) 
{ 
    database.execSQL("CREATE TABLE ANIME (_ID INTEGER PRIMARY KEY AUTOINCREMENT, " 
      + "NAME TEXT, " 
      + "DESCRIPTION TEXT, " 
      + "IMAGE INTEGER);"); 
    insertmore(database,"Naruto","A anime about ninjas",R.drawable.narut); 
    insertmore(database,"One Piece","A anime about pirates",R.drawable.one); 
    insertmore(database,"Death Note","A anime about shinigamis",R.drawable.deathnote); 

} 
else if(o<3) 
{ 
    database.execSQL("ALTER TABLE ANIME ADD COLUMN FAVOURITE NUMERIC;"); 
} 
} 
    private static void insertmore(SQLiteDatabase database,String name,String desc,int id) 
    { 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put("NAME",name); 
     contentValues.put("DESCRIPTION",desc); 
     contentValues.put("IMAGE",id); 
     database.insert("ANIME",null,contentValues); 
    } 
} 

wo ich es verwenden

package com.example.motorhead_luffy.tv; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.CursorAdapter; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.Toast; 


public class SecondActivity extends ListActivity{ 
private SQLiteDatabase database; 
private Cursor cursor; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ListView listView = getListView(); 
     try 
     { 
      SQLiteOpenHelper anime = new Anime(this); 
      database = anime.getReadableDatabase(); 
      cursor = database.query("ANIME", 
            new String[]{"_id","NAME"}, 
            null,null,null,null,null); 
      CursorAdapter listAdapter = new SimpleCursorAdapter(this, 
                  android.R.layout.simple_list_item_1, 
                  cursor, 
                  new String[]{"NAME"}, 
                  new int[]{android.R.id.text1}, 
                  0); 
       listView.setAdapter(listAdapter); 
     } 
     catch (Exception e) 
     { 
      Toast toast = Toast.makeText(this,"UNAVAILABLE",Toast.LENGTH_SHORT); 
      toast.show(); 
     } 
    } 
    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 
     cursor.close(); 
     database.close(); 
    } 
    @Override 
    public void onListItemClick(ListView listView, View view,int pos, long id) 
    { 
     Intent intent = new Intent(SecondActivity.this, NextActivity.class); 
     intent.putExtra("id",(int)id); 
     startActivity(intent); 
    } 
} 

Der Ausgang I nicht erreichbar bekommen (in Fang geschrieben), es kann jemand korrigieren?

Dies ist die Ausgabe von logcat (print)

06-22 15:45:39.064 576-576/com.example.motorhead_luffy.tv W/System.err: java.lang.IllegalArgumentException: column '_id' does not exist 
06-22 15:45:39.070 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303) 
06-22 15:45:39.070 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.widget.CursorAdapter.init(CursorAdapter.java:172) 
06-22 15:45:39.070 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.widget.CursorAdapter.<init>(CursorAdapter.java:149) 
06-22 15:45:39.070 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:91) 
06-22 15:45:39.071 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:104) 
06-22 15:45:39.071 576-576/com.example.motorhead_luffy.tv W/System.err:  at com.example.motorhead_luffy.tv.SecondActivity.onCreate(SecondActivity.java:31) 
06-22 15:45:39.071 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.app.Activity.performCreate(Activity.java:5248) 
06-22 15:45:39.071 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 
06-22 15:45:39.072 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162) 
06-22 15:45:39.072 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) 
06-22 15:45:39.072 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.app.ActivityThread.access$800(ActivityThread.java:139) 
06-22 15:45:39.072 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 
06-22 15:45:39.073 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
06-22 15:45:39.073 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.os.Looper.loop(Looper.java:136) 
06-22 15:45:39.073 576-576/com.example.motorhead_luffy.tv W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5086) 
06-22 15:45:39.073 576-576/com.example.motorhead_luffy.tv W/System.err:  at java.lang.reflect.Method.invokeNative(Native Method) 
06-22 15:45:39.074 576-576/com.example.motorhead_luffy.tv W/System.err:  at java.lang.reflect.Method.invoke(Method.java:515) 
06-22 15:45:39.074 576-576/com.example.motorhead_luffy.tv W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
06-22 15:45:39.075 576-576/com.example.motorhead_luffy.tv W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
06-22 15:45:39.075 576-576/com.example.motorhead_luffy.tv W/System.err:  at dalvik.system.NativeStart.main(Native Method) 

Auch die Anwendung auf Android 4.4.4 kitkat (API-19) eine Fehlfunktion hat funktioniert, aber korrekt auf 5,1 (API-21). Beide sind unterschiedliche Geräte.

+1

Den Stack-Trace im 'catch' -' e.printStackTrace(); '- ausdrucken und aus dem Logcat hochladen. –

+0

Ich habe die Frage entsprechend bearbeitet. Bitte werfen Sie einen Blick auf –

Antwort

0

Spalte '_id' existiert nicht Überprüfen Sie, ob die ID-Spalte korrekt angezeigt wird. Versuchen Sie, den Code zu debuggen, indem Sie Debug-Punkte setzen und sehen, wo genau die Ausnahme kommt.

+1

Danke! Ich habe gelernt, Debugpoints zu verwenden und entdeckte den Fehler. –

Verwandte Themen