【问题标题】:Android database: insert query errorAndroid数据库:插入查询错误
【发布时间】:2013-12-29 18:39:12
【问题描述】:

我正在开发一个需要持久性功能的应用程序。据我有限的理解,这需要两个类 - SQLiteHelper 类和 DatabaseManager 类。

为了让事情顺利进行,我有一个简单的过程,它将接受一个文本输入并将其插入到数据库中。但是,我收到一个错误:

12-29 19:17:47.952: E/SQLiteDatabase(5840): android.database.sqlite.SQLiteException: no such table: UserTable (code 1): , 编译时: INSERT INTO UserTable(username) VALUES (? )

表示没有用户表,虽然调用 onCreate() 时应该创建该表。

如果能帮助我克服这一障碍,我将非常感激。下面是用于创建数据库功能的两个类。非常感谢。

公共类 DatabaseHelper 扩展 SQLiteOpenHelper {

private static final String DATABASE_NAME         = "NutrtionIntuition";
private static final int  DATABASE_VERSION    = 2;

// Database creation sql statement
private static final String DATABASE_CREATE =   "create table UserTable " +
                                                "( _id integer primary key,name text not null);";

public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// Method is called during creation of the database. Method is also called on upgrade of database?
@Override
public void onCreate(SQLiteDatabase database) {
            database.execSQL(DATABASE_CREATE);
}

// Method is called during an upgrade of the database,
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {

                database.execSQL("DROP TABLE IF EXISTS User");
                onCreate(database);
} }
public class DatabaseManager{  

    private DatabaseHelper      dbHelper;  
    private SQLiteDatabase      database;  

    private static final String     USER_TABLE          = "UserTable";

    public static final String      KEY_ROWID           = "_id";
    public static final String      KEY_USERNAME        = "username";


    public DatabaseManager(Context context){  
      dbHelper = new DatabaseHelper(context);  
      database = dbHelper.getWritableDatabase();  
    }

    //Insert Records into the User Table
    public long insertRecords(int id, String name){  
        ContentValues values = new ContentValues();  
        //values.put(KEY_ROWID , id);  
        values.put(KEY_USERNAME, name); 
        Log.v("Test","Inserting.....");

        return database.insert(USER_TABLE, null, values);  
    }   

    public Cursor selectRecords() {
         String[] cols = new String[] {KEY_ROWID, KEY_USERNAME};  
         Cursor mCursor = database.query(true, USER_TABLE,cols,null  
              , null, null, null, null, null);  
         if (mCursor != null) {  
          mCursor.moveToFirst();  
       }  
       return mCursor; // iterate to get each value.
    }
}

【问题讨论】:

  • 卸载并重新安装您的应用程序,以便删除任何可能的旧数据库版本。或者清除您的应用数据以达到同样的效果。
  • ... 之后您更新的onCreate() 应该运行并且您的应用程序将在其他问题上失败。另一个错误,另一个 logcat。

标签: android database sqlite


【解决方案1】:

您正在使用_idname 创建一个表,而插入您正在使用_idusername。还有一个 - 在onUpgradeDROP TABLE IF EXISTS User 应该是DROP TABLE IF EXISTS UserTable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多