1

My create table statement looks like this:

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

When I try to insert into the db, it lets me insert a value for uid, but if I try to insert a value for pw or admin, it throws a SQLiteException 'table user has no column named pw', and the same for admin. Is my syntax not right? Here's my DBAdapter code:

public class DBAdapter extends Activity {

//*******DATABASE CONSTANTS**********

public static final String WORDS_TABLE = "words"; public static final String ATT_WORD = "word"; public static final String ATT_T1 = "T1"; public static final String ATT_T2 = "T2"; public static final String ATT_T3 = "T3"; public static final String ATT_T4 = "T4"; public static final String ATT_T5 = "T5"; public static final String ATT_RECENT = "recent"; public static final String ATT_RATING = "rating";

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();
}

And my insert code:

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

Any ideas would be much appreciated. Thanks!

6
  • What happens when you run your SQL manaully? Commented Nov 26, 2010 at 16:47
  • where is the code that sets up the ContextValues? Commented Nov 26, 2010 at 16:51
  • It creates the table fine, and the insert seems to work as well Commented Nov 26, 2010 at 16:55
  • Aaron - ContentValues content = new ContentValues(); content.put(DBAdapter.ATT_UID, (user.getText()).toString()); content.put(DBAdapter.ATT_PW, (pw.getText()).toString()); content.put(DBAdapter.ATT_ADMIN, admins.toString()); Commented Nov 26, 2010 at 16:56
  • ERROR/Database(1315): Error inserting uid=meburbo pw=thirty3 admin=0 ERROR/Database(1315): android.database.sqlite.SQLiteException: table user has no column named pw: , while compiling: INSERT INTO user(uid, pw, admin) VALUES(?, ?, ?); Commented Nov 26, 2010 at 16:56

1 Answer 1

1

DATABASE_NAME = "taboo" needed to be "taboo.db"

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.