2014-10-21 4 views
0

Я хочу создать несколько столбцов, но SQLite создает всегда только два столбца. Im проверки столбцов, как это:SQLite Database не создает столбцы

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

его всегда только COUNTNAME и UID. (Да, я обновление DATABASE_VERSION)

Вот мой код:

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

Thx laalto, вы были правы. Я создал курсор из 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();