首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android SQLite““no such table‘’

Android SQLite““no such table‘’
EN

Stack Overflow用户
提问于 2019-04-15 07:04:54
回答 1查看 0关注 0票数 0

这个问题在这里已有答案:

  • 什么时候SQLiteOpenHelper onCreate()/ onUpgrade()运行?

我正在创建一个注册应用程序,当我单击注册按钮时,它表示用户表不存在。

我已经更新数据库版本并卸载应用程序,但它仍然说它不存在。它甚至在浏览器上说该表就在那里。有人帮忙吗?

代码语言:javascript
复制
    public static final String DATABASE_NAME = "FitnessApp.db";

    public static final String TABLE_USER = "user_table";
    public static final String USER_COL_1 = "user_id";
    public static final String USER_COL_2 = "user_first_name";
    public static final String USER_COL_3 = "user_last_name";
    public static final String USER_COL_4 = "user_age";
    public static final String USER_COL_5 = "user_email";
    public static final String USER_COL_6 = "user_password";
    public static final String USER_COL_7 = "user_confirm_password";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
        SQLiteDatabase db = this.getWritableDatabase();
        this.mContext = context;
    }

    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_USER + " (user_id INTEGER PRIMARY 
    KEY AUTOINCREMENT, " +
                "user_first_name TEXT," +
                "user_last_name TEXT," +
                "user_age TEXT," +
                "user_email TEXT," +
                "user_password TEXT," +
                "user_confirm_password TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int 
    newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_USER);
    }

    public boolean insertUserData(String user_first_name, String user_last_name, String user_age, String user_email,
                                   String user_password, String user_confirm_password){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(USER_COL_2,user_first_name);
        contentValues.put(USER_COL_3,user_last_name);
        contentValues.put(USER_COL_4,user_age);
        contentValues.put(USER_COL_5,user_email);
        contentValues.put(USER_COL_6,user_password);
        contentValues.put(USER_COL_7,user_confirm_password);
        long result = db.insert(TABLE_USER, null, contentValues);
        if(result == -1)
            return false;
        else
            return true;
    }

    public Boolean checkUserData(String user_email){
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery("Select * from TABLE_USER where USER_COL_5=?", new String[]{user_email});
        if(cursor.getCount() > 0) return false;
        else return true;
   }

当我运行此代码时,我从logcat获取此代码:

android.database.sqlite.SQLiteException: no such table: TABLE_USER (code 1): , while compiling: Select * from TABLE_USER where USER_COL_5=? 我已经尝试更新数据库并卸载应用程序。

EN

回答 1

Stack Overflow用户

发布于 2019-04-15 16:51:01

当您查询时,

代码语言:javascript
复制
db.rawQuery("Select * from TABLE_USER where USER_COL_5=?", new String[]{user_email});

你需要传递TABLE_USER值,所以只需将其更改为:

代码语言:javascript
复制
db.rawQuery("Select * from " + TABLE_USER + " where USER_COL_5=?", new String[]{user_email});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档