2017-06-25 13 views
1

私は頭の最初のAndroidからSQLiteで勉強しています。私はそれを利用しようとしましたが、私は答えとして例外があります。私はそれを使用 データベース作成 `Androidデータベース例外、データベースが見つかりません

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); 
    } 
} 

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); 
    } 
} 

私が手出力は使用できません(キャッチで書かれた)、誰かがそれを修正することができますか?

これは、logcatの出力(のprintStackTrace)

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) 

またアプリは、Android 4.4.4キットカット(API-19)に故障しているが、5.1(API-21)で正しく動作です。どちらも異なるデバイスです。

+1

スタックトレースを 'catch' - ' e.printStackTrace(); 'でプリントし、logcatからポストします。 –

+0

私はそれに応じて質問を編集しました。どうぞご覧ください –

答えて

0

列 '_id'が存在しません ID列が正しく表示されているかどうかを確認してください。 デバッグポイントを配置してコードをデバッグし、例外がどこに来るのか正確に確認してください。

+1

ありがとうございました!私はデバッグポイントを使用することを学び、エラーを発見しました。 –

関連する問題