在 SQLite 中使用 long 始终返回 -1 时出现问题

我无法找到代码中缺少的内容。我正在尝试插入数据,但数据库助手类中的“long result == db.insert”始终返回-1”。我无法指出我做错了什么。请帮忙。任何想法将不胜感激。


我的数据库助手类:


public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "drivefinal.db";

public static final String TABLE_NAME = "drive_table";

public static final String ID = "ID";

public static final String NUMBER = "Number";

public static final String FNAME = "First Name";

public static final String LNAME = "Last Name";

public static final String COORDINATE = "Coordinate";

public static final String ADDRESS = "Address";

public static final String NOTES = "Notes";


public DatabaseHelper(Context context) {

    super(context, DATABASE_NAME, null, 1);

}


@Override

public void onCreate(SQLiteDatabase db) {

    db.execSQL("create table if not exists " + TABLE_NAME +"(ID INTEGER PRIMARY KEY AUTOINCREMENT ,NUMBER TEXT,FNAME TEXT,LNAME TEXT,COORDINATE TEXT,ADDRESS TEXT,NOTES TEXT)");

}


@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("DROP TABLE IF EXISTS " +TABLE_NAME);

    onCreate(db);

}


public boolean insertData(String number, String fName, String lName, String coordinate, String address, String notes){

    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues contentValues = new ContentValues();

    contentValues.put(NUMBER, number);

    contentValues.put(FNAME, fName);

    contentValues.put(LNAME, lName);

    contentValues.put(COORDINATE, coordinate);

    contentValues.put(ADDRESS, address);

    contentValues.put(NOTES, notes);


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

        if(result == -1 )

            return false;

        else

            return true;

}


回首忆惘然
浏览 252回答 1
1回答

慕森王

表定义创建的列名与您在插入时尝试使用的列名不同。例如,您的表将具有列名 FNAME 而不是名字(等)。其次,尝试使用名为“名字”的列时会遇到问题,因为它包含一个空格,并且必须括起来,例如[名字]。我建议使用:-public static final String NUMBER = "Number";public static final String FNAME = "FirstName"; //<<<<<<<<<< space removedpublic static final String LNAME = "LastName"; //<<<<<<<<<< space removedpublic static final String COORDINATE = "Coordinate";public static final String ADDRESS = "Address";public static final String NOTES = "Notes";随着:-db.execSQL("create table if not exists " + TABLE_NAME +"(" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT ," + NUMBER + " TEXT," + FNAME + " TEXT," + LNAME + " TEXT," + COORDINATE + " TEXT," + ADDRESS + " TEXT," + NOTES + " TEXT)");要引入更改(即运行onCreate方法,因为它仅在创建数据库时自动运行),您必须执行以下操作之一:-删除应用的数据。卸载应用程序。更改数据库版本号,例如更改为super(context, DATABASE_NAME, null, 1);super(context, DATABASE_NAME, null, 2);,然后重新运行该应用程序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java