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



我尝试在我的学生表数据上插入学生详细信息。但是显示了这个错误:插入STUDENT_ROLL=1 STUDENT_NAME=D _CID=4错误android.database.sqlite.SQLiteException: no such table: STUDENT_TABLE(code 1):,编译时: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;
}

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

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

更多信息可以在这里找到

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

database.execSQL(CREATE_STUDENT_TABLE);

最新更新