2014-10-21 2 views
0

몇 가지 열을 만들고 싶지만 SQLite는 항상 두 개의 열만 만듭니다. 는 필자는 다음과 같이 열을 확인 :SQLite 데이터베이스가 열을 생성하지 않습니다.

String[] str= cursor.getColumnNames(); 
    for(int i=0; i<str.length; i++) 
     Toast.makeText(this, str[i], Toast.LENGTH_SHORT).show(); 

는 항상에만 COUNTNAME 및 UID를.

public class DatabaseHelper extends SQLiteOpenHelper{ 
private static final String DATABASE_NAME ="CountsDatabase"; 
public static final String TABLE_NAME="COUNTSTABLE"; 
private static final int DATABASE_VERSION = 21; 
public static final String UID = "_id"; 
public static final String COUNTNAME = "CountName1"; 
public static final String COUNTNAME2 = "CountName2"; 
public static final String AKTUELLERWERT = "aktuellerWert"; 
private static final String CREATE_TABLE ="CREATE TABLE " + TABLE_NAME + " ("+ UID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COUNTNAME +" TEXT,"+ COUNTNAME2 +" TEXT," + AKTUELLERWERT + " INTEGER" + ");"; 
private static final String DROP_TABLE ="DROP TABLE IF EXISTS "+TABLE_NAME; 
Context context; 

public DatabaseHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    this.context=context; 
    Toast.makeText(context, "Constructor Database", Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    Toast.makeText(context, "onCreate Database", Toast.LENGTH_SHORT).show(); 
    Toast.makeText(context, CREATE_TABLE, Toast.LENGTH_LONG).show(); 
    try{ 

     db.execSQL(CREATE_TABLE); 
    } catch(SQLException e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    Toast.makeText(context, "Upgrade Database", Toast.LENGTH_SHORT).show(); 
    try{ 
     db.execSQL(DROP_TABLE); 
     onCreate(db); 
    } catch(SQLException e){ 
     e.printStackTrace(); 
    } 

} 
} 
+0

. 어떻게 커서를 처음부터 만들고 있습니까? 또한 'Toast'는 너무 신뢰할 수있는 로깅 메커니즘이 아니며 예를 들어 대신에'android.util.Log'를 사용하십시오. – laalto

답변

0

들으 laalto, 당신이 옳았 :

를 (예 내가 DATABASE_VERSION를 업데이트하고있어) 여기 내 코드입니다. ListView에서 모든 값을 가진 커서를 만들지 않았습니다.

Cursor cursor = (Cursor)parent.getItemAtPosition(position); 

    String[] str= cursor.getColumnNames(); 
    for(int i=0; i<str.length; i++) 
       Toast.makeText(this, str[i], Toast.LENGTH_SHORT).show(); 

솔루션했다 : 당신은 커서의 열이 아닌 데이터베이스 테이블을 반복하고

String[] columns= {DatabaseHelper.UID, DatabaseHelper.COUNTNAME, DatabaseHelper.AKTUELLERWERT}; 
    Cursor cursor = sqlDatabase.query(DatabaseHelper.TABLE_NAME, columns, null, null, null, null, null); 
    String[] str= cursor.getColumnNames(); 
    for(int i=0; i<str.length; i++) 
     Toast.makeText(this, str[i], Toast.LENGTH_SHORT).show(); 
관련 문제