java - 在sqlite中插入不起作用

标签 java android sqlite

我正在尝试进行插入调用以在 sqlite 代码中将行添加到我的表中, 每次插入返回1,并且在插入行后我检查该行是否已插入并且找不到。

这是我的代码:

创建表:

public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        // create table artists
        String createTableStatement1 = "CREATE TABLE " + TABLE_ARTISTS +" ("+ KEY_ID + " INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , "
                                    + KEY_ARTIST_NAME + " TEXT UNIQUE , " + KEY_ARTIST_IMAGE + " BLOB, " + KEY_ARTIST_JSON + " TEXT, "
                                    + KEY_ARTIST_DATE + " DATETIME DEFAULT (datetime('now')), " + KEY_ARTIST_FLAG + " INTEGER NOT NULL  DEFAULT 1);";
        db.execSQL(createTableStatement1);


        //creat table users
        String createTableStatement2 = "CREATE TABLE "+ TABLE_USERS + " ("+ KEY_USER_ID + " INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE, "
                + KEY_PROFILE_ID + " TEXT UNIQUE, " + KEY_PROFILE_JSON + " TEXT, "+ KEY_PROFILE_IMAGE + " BLOB, " + KEY_PROFILE_FLAG 
                + " INTEGER NOT NULL);";
        db.execSQL(createTableStatement2);

    }

升级表格

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_ARTISTS);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);

        // Create tables again
        onCreate(db);
    }

插入用户行

public void insertUserToDB(User user)
    {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_PROFILE_FLAG, user.getProfile_flag());
        values.put(KEY_PROFILE_IMAGE, user.getProfileImageByteArray());
        values.put(KEY_PROFILE_JSON, user.getProfile_json());
        values.put(KEY_PROFILE_ID, user.getProfile_id());

        db.beginTransaction();
        long result = db.insertOrThrow(TABLE_USERS, null, values);

        db.endTransaction();
        db.close();


    }

检查数据库中的用户

public boolean isUserInDB(String profileID)
    {
        SQLiteDatabase db = this.getReadableDatabase();
        db.beginTransaction();
        String sqlStatement = "SELECT * FROM "+ TABLE_USERS +" WHERE " + TABLE_USERS + "."+ KEY_PROFILE_ID +
                                "="  + "\""+ profileID + "\"";
        Cursor cursor = db.rawQuery(sqlStatement, null);
        boolean exists = ((cursor.getCount())!=0);
        cursor.close();
        db.endTransaction();
        db.close();

        return exists;
    }

有什么想法吗?

最佳答案

您需要调用setTransactionSuccessful()使 endTransaction() 应用您的更改。

关于java - 在sqlite中插入不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24991805/

相关文章:

java - auth0-java v1.0.0 失败并出现错误 400 : User is not authorized to the audience for those scopes

java - 如何更快地加密文件

java - 如何为 log4j2 RollingFileAppender 进行编程配置

android - ListView SetAdapter NullPointerException异常

android - 是否可以使用可绘制对象制作动画?

android - 如何从 main.xml 中检索 TextView 文本

android - 确定 SQLite 中列的数据类型

sql - 在 SQLite 中查找与 GROUP BY 结果 HAVING count > 1 匹配的所有记录

java - 使用ant build读取java中的静态文件

Python sqlite3.操作错误: no such table: