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.
Den Stack-Trace im 'catch' -' e.printStackTrace(); '- ausdrucken und aus dem Logcat hochladen. –
Ich habe die Frage entsprechend bearbeitet. Bitte werfen Sie einen Blick auf –