为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

回首忆惘然 2022-09-07 21:45:02
我无法找到代码中缺少的内容。我正在尝试插入数据,但数据库助手类中的“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);}@Overridepublic 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)");}@Overridepublic 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;}
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

表定义创建的列名与您在插入时尝试使用的列名不同。


例如,您的表将具有列名 FNAME 而不是名字(等)。


其次,尝试使用名为“名字”的列时会遇到问题,因为它包含一个空格,并且必须括起来,例如[名字]。


我建议使用:-


public static final String NUMBER = "Number";

public static final String FNAME = "FirstName"; //<<<<<<<<<< space removed

public static final String LNAME = "LastName"; //<<<<<<<<<< space removed

public 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);

,然后重新运行该应用程序。


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 251 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信