2012-02-12 4 views
0

Я получаю сообщение об ошибке, когда пытаюсь вставить данные в SQL DB. Ошибка указывает на то, что мой столбец uName не существует, когда он пытается вставить данные в этот столбец. По моим наблюдениям этот столбец должен быть создан. Возможно, я что-то пропустил. другой взгляд на это может быть полезным.Ошибка создания SQLite DB

LogCat:

01-23 20: 20: 15,532: Е/База данных (2322): Ошибка вставки uName = хххх wUrl = XXXXXXXX зЫате = хххх хххх = pWord

01-23 20:20 : 15.532: E/Database (2322): android.database.sqlite.SQLiteException: таблица infoTable не имеет столбца с именем uName: при компиляции: INSERT INTO infoTable (uName, wUrl, sName, pWord) VALUES (?,?,?, ?); Создание

DB:

 String sqlDataStore = "create table if not exists " + 
     TABLE_NAME_INFOTABLE + " ("+ BaseColumns._ID + " integer primary key autoincrement," 

        + COLUMN_NAME_SITE + "text not null," 
        + COLUMN_NAME_ADDRESS + "text not null," 
        + COLUMN_NAME_USERNAME + "text not null," 
        + COLUMN_NAME_PASSWORD + "text not null)"; 

     db.execSQL(sqlDataStore); 

Вот мой класс:

общественного класса DATASTORE расширяет SQLiteOpenHelper {

//Table attributes 
public static final String DATABASE_NAME = "SiteLogindb"; 
public static final int DATABASE_VERSION = 1; 
public static final String TABLE_NAME_INFOTABLE = "infoTable"; 

// Data attributes 
public static final String COLUMN_NAME_SITE = "sName"; 
public static final String COLUMN_NAME_ADDRESS = "wUrl"; 
public static final String COLUMN_NAME_USERNAME = "uName"; 
public static final String COLUMN_NAME_PASSWORD = "pWord"; 


public dataStore(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     // TODO Auto-generated constructor stub 
    } 
+0

попробуйте полностью удалить приложение и установить его снова. Если вы разрабатывали приложение и меняли схему DB, то, вероятно, у вас есть БД со старой схемой, которая (опять же, возможно) не имеет uName в ней. Поскольку код создает таблицу только в том случае, если она еще не существует, ваша старая таблица сохраняется поверх новой. Это только моя догадка. –

+0

Спасибо за ответ. Как бы я выполнил удаление из эмулятора – user1165694

ответ

0

вопрос был ликвидирован путем удаления databa se из эмулятора.

Перейдите к DDMS, затем перейдите к файловому проводнику, затем откройте данные -> ---> data -> then your package ---> then database и здесь у вас есть база данных, и вы можете удалить ее, нажав минус " - "знак сверху справа.

0

Попробуйте изменить DB_Version 2:

public static final int DATABASE_VERSION = 2; 
+0

измененной версии до 2, но получил ту же ошибку при запуске эмулятора. – user1165694

0

ставить точку с запятой в конце вашего определения таблицы как здесь она решает ваш probelm

TABLE_NAME_INFOTABLE + " ("+ BaseColumns._ID + " integer primary key autoincrement," 

         + COLUMN_NAME_SITE + "text not null," 
         + COLUMN_NAME_ADDRESS + "text not null," 
         + COLUMN_NAME_USERNAME + "text not null," 
         + COLUMN_NAME_PASSWORD + "text not null);"; 
+0

Добавлена ​​точка с запятой, но получена та же ошибка. – user1165694

0

У вас не хватает места здесь после того, как двойные кавычки, прежде чем текст " text.....

+ COLUMN_NAME_SITE + " text not null," 
+ COLUMN_NAME_ADDRESS + " text not null," 
+ COLUMN_NAME_USERNAME + " text not null," 
+ COLUMN_NAME_PASSWORD + " text not null)"; 

надеюсь, что это помогает

+0

Я добавил точку с запятой и интервалы в соответствии с инструкциями и получил ту же ошибку в LogCat – user1165694

+0

. Отбросьте базу данных из эмулятора, используя оболочку adb, и заново создайте ее или проверьте db для себя, используя команду командной строки sqlite3 –

0

Смотрите ниже:

 String sqlDataStore = "create table if not exists " + 
     TABLE_NAME_INFOTABLE + " ("+ BaseColumns._ID + " integer primary key autoincrement," 

        + COLUMN_NAME_SITE + " text not null," 
        + COLUMN_NAME_ADDRESS + " text not null," 
        + COLUMN_NAME_USERNAME + " text not null," 
        + COLUMN_NAME_PASSWORD + " text not null);"; 

     db.execSQL(sqlDataStore);