sqlite 在我的数据库中添加数据时出错

jbose2ul  于 2023-03-03  发布在  SQLite
关注(0)|答案(2)|浏览(167)

我正在尝试配置一个简单的SQLiteOpenHelper,在执行. android.database.sqlite时出现错误。表people_table没有名为Minutes的列(代码1):,编译时:INSERT INTO people_table(分钟,小时)VALUES(?,?)我不知道问题出在哪里?

package radiofm.arabel;

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

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String TAG = "DatabaseHelper";

    private static final String TABLE_NAME = "people_table";
    private static final String COL1 = "ID";
    private static final String COL2 = "Hour";
    private static final String COL3 = "Minutes";


    public DatabaseHelper(Context context) {
        super(context, TABLE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String createTable = "CREATE TABLE " + TABLE_NAME + " (" +

                COL1 + "ID INTEGER PRIMARY KEY AUTOINCREMENT," +

                COL2 + "TEXT," +

                COL3 + "TEXT "  +

                ");";

        db.execSQL(createTable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    public boolean addData(String item1,String item2) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL2, item1);
        contentValues.put(COL3, item2);

        Log.d(TAG, "addData: Adding " + item1 + " to " + TABLE_NAME);

        long result = db.insert(TABLE_NAME, null, contentValues);

        //if date as inserted incorrectly it will return -1
        if (result == -1) {
            return false;
        } else {
            return true;
        }
    }

}
6g8kf2rb

6g8kf2rb1#

您在创建表时忘记了空格。您的列现在名为MinutesTEXT
这本身不是错误,因为您不必在SQLite中指定列类型。
Reference
要解决这个问题,请确保删除当前数据库,并将创建表查询替换为该查询。

String createTable = "CREATE TABLE " + TABLE_NAME + " (" +

                COL1 + " INTEGER PRIMARY KEY AUTOINCREMENT," +

                COL2 + " TEXT," +

                COL3 + " TEXT "  +

                ");";
pu3pd22g

pu3pd22g2#

您的onCreate在SQL列定义中似乎缺少空格。另外,您的ID列必须定义为_id。
试试这个。

private static final String COL1 = "_id";

还有

@Override
    public void onCreate(SQLiteDatabase db) {

        String createTable = "CREATE TABLE " + TABLE_NAME + " (" +

                COL1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +

                COL2 + " TEXT, " +

                COL3 + " TEXT "  +

                ");";

        db.execSQL(createTable);
    }

相关问题