2010-11-26 6 views
1

Mon create table ressemble à ceci:Problème créer table avec SQLite dans Android

private static final String USER_CREATE = 
"create table user (uid text unique, pw text, admin integer);"; 

Lorsque je tente d'insérer dans le db, il me permet d'insérer une valeur pour uid, mais si je tente d'insérer un valeur pour pw ou admin, il lève un SQLiteException 'l'utilisateur de la table n'a pas de colonne nommée pw', et la même chose pour admin. Ma syntaxe n'est-elle pas correcte? Voici mon code dbAdapter:

public class DBAdapter extends Activity { 

// * ** * ***BASE DE DONNÉES CONSTANTES* ** * ** * ***

public static final Chaîne WORDS_TABLE = "mots"; Public static final String ATT_WORD = "mot"; Public static final String ATT_T1 = "T1"; Public static final Chaîne ATT_T2 = "T2"; Public static final String ATT_T3 = "T3"; Public static final String ATT_T4 = "T4"; Public static final Chaîne ATT_T5 = "T5"; Public static final String ATT_RECENT = "recent"; Public static final String ATT_RATING = "notation";

public static final String STATISTICS_TABLE = "statistics"; 
public static final String ATT_GAMESPLAYED = "gamesPlayed"; 
public static final String ATT_wordsCORRECT = "wordsCorrect"; 
public static final String ATT_wordsWRONG = "wordsWrong"; 
public static final String ATT_POINTTOTAL = "pointTotal"; 
public static final String ATT_WINS = "wins"; 
public static final String ATT_LOSSES = "losses"; 

public static final String SETTING_TABLE = "settings"; 
public static final String ATT_SID = "sid"; 
public static final String ATT_TYPE = "type"; 
public static final String ATT_DURATION = "duration"; 
public static final String ATT_PTSTOWIN = "ptsToWin"; 

public static final String CATEGORIES_TABLE = "categories"; 
public static final String ATT_CATEGORY = "category"; 

public static final String BELONGS_TABLE = "belongs"; 

public static final String USER_TABLE = "user"; 
public static final String ATT_UID = "uid"; 
public static final String ATT_PW = "pw"; 
public static final String ATT_ADMIN = "admin"; 

public static final String DATABASE_NAME = "taboo"; 
private static final int DATABASE_VERSION = 1; 
private static final String TAG = "DBAdapter"; 

private static final String WORDS_CREATE = 
    "create table words (_id primary key autoincrement,word text," 
    + "T1 text,T2 text,T3 text,T4 text,T5 text," 
    + "recent integer,rating integer);"; 

private static final String CATEGORIES_CREATE = 
    "create table categories (_id integer primary key autoincrement,category text unique);"; 

private static final String BELONGS_CREATE = 
"create table belongs (_id integer primary key autoincrement,word text,category text," 
    + "foreign key (word) references words (word),foreign key (category) references categories (category));"; 

private static final String USER_CREATE = 
"create table user (uid text unique, pw text, admin integer);"; 

private static final String STATISTICS_CREATE = 
    "create table statistics (_id integer primary key autoincrement, uid text unique, gamesPlayed integer, wordsCorrect integer, " 
    +"wordsWrong integer, pointTotal integer, wins integer, losses integer, " 
    +"foreign key (uid) references user (uid));"; 

private static final String SETTINGS_CREATE = 
    "create table settings (_id integer primary key autoincrement, uid text, sid text, " 
    +"type text, duration integer, ptsToWin integer, " 
    +"foreign key (uid) references user (uid));" 
    ; 


//************************************************************** 
//********************* Function Constants ******************** 
//************************************************************** 

private final Context context; 
private DatabaseHelper DBHelper; 
public static SQLiteDatabase db; 
private int wordCount = 100; 

//******************** Object 
public DBAdapter(Context ctx) 
{ 
    this.context = ctx; 
    DBHelper = new DatabaseHelper(context); 
} 

private static class DatabaseHelper extends SQLiteOpenHelper 
{ 
DatabaseHelper(Context context) 
    { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) 
    { 
     db.execSQL(WORDS_CREATE); 
     db.execSQL(CATEGORIES_CREATE); 
     db.execSQL(BELONGS_CREATE); 
     db.execSQL(USER_CREATE); 
     db.execSQL(STATISTICS_CREATE); 
     db.execSQL(SETTINGS_CREATE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
          int newVersion) 
    { 
     Log.w(TAG, "Upgrading database from version " + oldVersion 
       + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS " + WORDS_TABLE); 
     onCreate(db); 
    } 
}  

//**************************************************** 
//******** Database Functions ********************** 
//**************************************************** 

public DBAdapter open() throws SQLException 
{ 
db = DBHelper.getWritableDatabase(); 
    return this; 
} 
public void close() 
{ 
    DBHelper.close(); 
} 

Et mon code d'insertion:

public long enterUser(ContentValues content) 
{ 
long result = db.insert(USER_TABLE, null, content); 
return result; 
} 

Toutes les idées seraient appréciées. Merci!

+0

Qu'est-ce qui se passe lorsque vous exécutez votre SQL manaully? –

+0

où est le code qui configure les ContextValues? –

+0

Il crée la table bien, et l'insertion semble fonctionner aussi bien – meburbo

Répondre

1

DATABASE_NAME = "tabou" devait être "taboo.db"