2017-11-17 4 views
-1

私のアプリケーションは、DataBaseからいくつかの情報を取得し、ListViewにテーブルを表示する必要がありました。 基本的に、テーブルへのデータの挿入専用のアクティビティはありません。 私はModelHelperでそれをやっています。 userテーブルには次のものが含まれています:ID、Fname、Lname; IDはPRIMARY KEY AUTOINCREMENT NULLではありません。テーブルからデータを取得できません:コンパイル中にエラーが発生しました

public void onCreate(SQLiteDatabase db) { 
     db.execSQL(CREATE_TABLE_USER); 
db.execSQL("INSERT INTO " + USER +" VALUES ('DOME','TRY')"); 
} 

私はリストを宣言ユーザ活動に

public ArrayList getOnlyNames(){ 
     ArrayList lst = new ArrayList(); 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor c = db.rawQuery("SELECT " +KEY_FNAME+ " from " +TABLE_QUESTION,null); 
     if (c.moveToFirst()) { 
      while(c.isAfterLast()==false){ 
       String t1 = c.getString(1); 
       lst.add(t1); 
       c.moveToNext(); 
      } 
     } 
     return lst; 
    } 

のFnamesを返すメソッドをした: リストビューLST =(リストビュー)findViewById(R.id.list1)。

、ここでは、使用される方法です。

public void showQuest(View view){ 

     ArrayList<String> lstQ = md.getOnlyNames(); 
     ArrayAdapter lstad = new ArrayAdapter(this, android.R.layout.simple_list_item_1,lstQ); 
     lst.setAdapter(lstad); 
    } 

と私は同じ活動にボタンにOnlick「showquest」を追加しました。

ログエラーがある:

FATAL EXCEPTION: main 
                       Process: com.example.root.myapplication, PID: 10225 
                       java.lang.IllegalStateException: Could not execute method for android:onClick 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
                        at android.view.View.performClick(View.java:6294) 
                        at android.view.View$PerformClick.run(View.java:24770) 
                        at android.os.Handler.handleCallback(Handler.java:790) 
                        at android.os.Handler.dispatchMessage(Handler.java:99) 
                        at android.os.Looper.loop(Looper.java:164) 
                        at android.app.ActivityThread.main(ActivityThread.java:6494) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
                       Caused by: java.lang.reflect.InvocationTargetException 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                        at android.view.View.performClick(View.java:6294)  
                        at android.view.View$PerformClick.run(View.java:24770)  
                        at android.os.Handler.handleCallback(Handler.java:790)  
                        at android.os.Handler.dispatchMessage(Handler.java:99)  
                        at android.os.Looper.loop(Looper.java:164)  
                        at android.app.ActivityThread.main(ActivityThread.java:6494)  
                        at java.lang.reflect.Method.invoke(Native Method)  
                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)  
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)  
                       Caused by: android.database.sqlite.SQLiteException: no such column: Question (code 1): , while compiling: SELECT Question from Question 
                        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
                        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:890) 
                        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:501) 
                        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
                        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
                        at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 
                        at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46) 
                        at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1392) 
                        at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1331) 
                        at model.sqlite.data.ModelHelper.getOnlyQuestions(ModelHelper.java:253) 
                        at com.example.root.myapplication.kamiActivity.showQuest(kamiActivity.java:98) 
                        at java.lang.reflect.Method.invoke(Native Method)  
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
                        at android.view.View.performClick(View.java:6294)  
                        at android.view.View$PerformClick.run(View.java:24770)  
                        at android.os.Handler.handleCallback(Handler.java:790)  
                        at android.os.Handler.dispatchMessage(Handler.java:99)  
                        at android.os.Looper.loop(Looper.java:164)  
                        at android.app.ActivityThread.main(ActivityThread.java:6494) 

問題がボタンでメソッドを使用することから来ている、と私はDBが空になると思うが、それは取ることができない理由を私は知りませんそれは既にテーブルに入っています。

+0

を投稿することができますでしょうか? – solamente

答えて

0

1つの列にのみデータを要求しました。列インデックスは1ではなく0になります。

while(c.isAfterLast()==false){ 
      String t1 = c.getString(0); 
      lst.add(t1); 
      c.moveToNext(); 
} 

例外はすべてです。

Caused by: android.database.sqlite.SQLiteException: no such column: Question (code 1): , while compiling: SELECT Question from Question 

安全な方法は、あなたが完全なソースコードデ

c.getString(c.getColumnIndex(KEY_NAME)); 
+0

あなたの方法を試しましたが、依然として同じ問題があります – Master49

+0

完全なコードを投稿する必要があります。 – SMagic

関連する問題