无法在 SQLite 数据库 Android 上插入数据

Posted

技术标签:

【中文标题】无法在 SQLite 数据库 Android 上插入数据【英文标题】:Can't insert Data on SQLite Database Android 【发布时间】:2021-12-12 01:55:53 【问题描述】:

我尝试在我的学生表数据中插入学生 Dethasails。但显示此错误: 插入错误 STUDENT_ROLL=1 STUDENT_NAME=D _CID=4 android.database.sqlite.SQLiteException: no such table: STUDENT_TABLE (code 1): , while compile: INSERT INTO STUDENT_TABLE(STUDENT_ROLL,STUDENT_NAME,_CID) VALUES (?,?,?)

这是我的代码: 声明表:-

public static final String STUDENT_TABLE_NAME = "STUDENT_TABLE";
public static final String S_ID = "_SID";
public static final String STUDENT_NAME_KEY = "STUDENT_NAME";
public static final String STUDENT_ROLL_KEY = "STUDENT_ROLL";

public static final String CREATE_STUDENT_TABLE = 
        "CREATE TABLE " + STUDENT_TABLE_NAME + "(" +
                S_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                C_ID + " LONG , " +
                STUDENT_NAME_KEY + " VARCHAR(255), " +
                STUDENT_ROLL_KEY + " INTEGER , " +
                " FOREIGN KEY (" + C_ID + ") REFERENCES " + CLASS_TABLE_NAME + "(" +C_ID+")" +");";

public static final String DROP_STUDENT_TABLE = " DROP TABLE IF EXISTS " + STUDENT_TABLE_NAME;
public static final String SELECT_STUDENT_TABLE = "SELECT * FROM " + STUDENT_TABLE_NAME;

Add Student 添加学生的方法。 c_id 是外键。

long addStudent(long c_id, String studentName, int studentRoll)
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(STUDENT_NAME_KEY,studentName);
    values.put(STUDENT_ROLL_KEY,studentRoll);
    values.put(C_ID, c_id);
    try
        long s_id = sqLiteDatabase.insert(STUDENT_TABLE_NAME, null, values);
        return s_id;
     catch (SQLException e)
        e.printStackTrace();
    
    return -1;

【问题讨论】:

错误很明显:no such table ***.com/a/12015869/8133524 关注此 【参考方案1】:

日志中指出的问题是该表不存在。您创建了用于创建表的 sqlite 语句,但我认为您没有从任何地方执行它。您必须在数据库助手类中执行 sqlite 语句:

@Override
public void onCreate(SQLiteDatabase database) 
  database.execSQL(CREATE_STUDENT_TABLE);

更多信息可以找到here

【讨论】:

【参考方案2】:

你创建了查询来创建你的表,但它没有在任何地方执行,你只需要在执行插入之前执行它

  database.execSQL(CREATE_STUDENT_TABLE);

【讨论】:

以上是关于无法在 SQLite 数据库 Android 上插入数据的主要内容,如果未能解决你的问题,请参考以下文章

无法写入导入的 SQLite 数据库 Android

无法打开在 Android 中创建的 SQLite DB(文件已加密或不是数据库)

无法存储android设备的位置并将其存储在sqlite中

无法在 android studio SQLite 数据库中动态创建多个表

使用“SQLite 数据库浏览器”创建或编辑数据库后,android 无法打开数据库

无法从 SQLite 检索数据说 android (Eclipse) 中不存在该列