2017-11-17 1 views
-1

내 응용 프로그램은 데이터베이스에서 정보를 얻고 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를 반환하는 방법을했다 : 의 ListView 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이 아닌 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

관련 문제