2014-01-13 4 views
0

Я пытаюсь изучить SQLite, пробовав основные вещи и (как и ожидалось), это действительно не работает. Я попытался создать еще одну БД (другой файл), но ошибка остается прежней. Пожалуйста, направляйте меня. Я новичок в Android, поэтому у меня мало знаний.Таблица * не имеет колонки с именем **

package net.multiplesystem.nosms.database; 
import android.content.ContentValues; 
import android.content.Context; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 

public class RegisterAdapter 
{ 
    static final String DATABASE_NAME = "register.db"; 
    static final int DATABASE_VERSION = 1; 
    public static final int NAME_COLUMN = 1; 
    // TODO: Create public field for each column in your table. 
    // SQL Statement to create a new database. 
    static final String DATABASE_CREATE = "create table "+"REGISTER"+ 
      "(" +"ID"+" integer primary key autoincrement,"+ "NAME text,"+"NUMBER text); "; 
    // Variable to hold the database instanceSTER 
    public SQLiteDatabase db; 
    // Context of the application using the database. 
    private final Context context; 
    // Database open/upgrade helper 
    private DataBaseHelper dbHelper; 
    public RegisterAdapter(Context _context) 
    { 
     context = _context; 
     dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 
    public RegisterAdapter open() throws SQLException 
    { 
     db = dbHelper.getWritableDatabase(); 
     return this; 
    } 
    public void close() 
    { 
     db.close(); 
    } 

    public SQLiteDatabase getDatabaseInstance() 
    { 
     return db; 
    } 


    public void insertEntry(String userName,String number) 
    { 
     ContentValues newValues = new ContentValues(); 
     // Assign values for each row. 
     newValues.put("NUMBER",number); 
     newValues.put("NAME", userName); 


     // Insert the row into your table 
     db.insert("REGISTER", null, newValues); 
     ///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show(); 
    } 
} 

Это мой LogCat:

01-13 08:55:49.269: E/SQLiteLog(2588): (1) table REGISTER has no column named NAME 
01-13 08:55:49.319: E/SQLiteDatabase(2588): Error inserting NAME=hhhh NUMBER=564 
01-13 08:55:49.319: E/SQLiteDatabase(2588): android.database.sqlite.SQLiteException: table REGISTER has no column named NAME (code 1): , while compiling: INSERT INTO REGISTER(NAME,NUMBER) VALUES (?,?) 
01-13 08:55:49.319: E/SQLiteDatabase(2588):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
01-13 08:55:49.319: E/SQLiteDatabase(2588):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
01-13 08:55:49.319: E/SQLiteDatabase(2588):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
01-13 08:55:49.319: E/SQLiteDatabase(2588):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
01-13 08:55:49.319: E/SQLiteDatabase(2588):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
01-13 08:55:49.319: E/SQLiteDatabase(2588):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
01-13 08:55:49.319: E/SQLiteDatabase(2588):  at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467) 
01-13 08:55:49.319: E/SQLiteDatabase(2588):  at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339) 
01-13 08:55:49.319: E/SQLiteDatabase(2588):  at net.multiplesystem.nosms.database.RegisterAdapter.insertEntry(RegisterAdapter.java:65) 

package net.multiplesystem.nosms.database; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class DataBaseHelper extends SQLiteOpenHelper 
{ 
    public DataBaseHelper(Context context, String name,CursorFactory factory, int version) 
    { 
     super(context, name, factory, version); 
    } 
    // Called when no database exists in disk and the helper class needs 
    // to create a new one. 
    @Override 
    public void onCreate(SQLiteDatabase _db) 
    { 
     _db.execSQL(RegisterAdapter.DATABASE_CREATE); 

    } 
    // Called when there is a database version mismatch meaning that the version 
    // of the database on disk needs to be upgraded to the current version. 
    @Override 
    public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) 
    { 
     // Log the version upgrade. 
     Log.w("TaskDBAdapter", "Upgrading from version " +_oldVersion + " to " +_newVersion + ", which will destroy all old data"); 

     // Upgrade the existing database to conform to the new version. Multiple 
     // previous versions can be handled by comparing _oldVersion and _newVersion 
     // values. 
     // The simplest case is to drop the old table and create a new one. 
     _db.execSQL("DROP TABLE IF EXISTS " + "REGISTER"); 
     // Create a new one. 
     onCreate(_db); 
    } 
} 
+0

Вы действительно выполняете DATABASE_CREATE где-нибудь? –

+0

Да в другом действии. –

+0

Вчера я ответил на тот же вопрос .. проверьте ссылку http://stackoverflow.com/questions/21078184/error-in-inserting-values-to-database/21078592#21078592 –

ответ

2

ли вы на самом деле создать таблицу? Кажется, что сценарий DATABASE_CREATE никогда не выполняется. Если вы создали его один раз, а затем изменили оператор, убедитесь, что он выполняется снова, увеличивая версию базы данных.

DATABASE_VERSION = 1, у вас была предыдущая версия без столбца NAME? Попробуйте увеличить размер базы данных DATABASE_VERSION (возможно, добавьте несколько протоколов/точек останова) и посмотрите, воссоздана ли БД.

+0

, пожалуйста, проверьте обновленное сообщение, я включил другое действие которые выполняют сценарий DATABASE_CREATE. –

Смежные вопросы