我对这些代码块有疑问。我认为这是我遇到的一个SQL问题。这段代码应该创建一个student表,并将我的android应用程序中的数据插入到student表中。我收到一个错误,说该courseid列不存在。我认为问题与在课程表中被声明为主键的courseid有关。
创建课程表:
public static String createTable(){
return "CREATE TABLE " + DbSchema.TABLE_Course + "("
+ DbSchema.KEY_CourseId + " PRIMARY KEY ,"
+ DbSchema.KEY_Name_Course + " TEXT )";
}
创建学生表:
public static String createTable(){
return "CREATE TABLE " + DbSchema.TABLE_Student + "("
+ DbSchema.KEY_StudID + " PRIMARY KEY ,"
+ DbSchema.KEY_Name_Student + " TEXT, "
+ DbSchema.KEY_Year_Student + " TEXT, "
+ DbSchema.KEY_Email_Student+ " TEXT,"
+ DbSchema.KEY_CourseId+" TEXT )";
}
插入表格:
public void insert(Student student) {
SQLiteDatabase db = DatabaseManager.getInstance().openDatabase();
ContentValues values = new ContentValues();
values.put(DbSchema.KEY_StudID, student.getid());
values.put(DbSchema.KEY_Name_Student, student.getname());
values.put(DbSchema.KEY_Year_Student, student.getYear());
values.put(DbSchema.KEY_Email_Student, student.getEmail());
values.put(DbSchema.KEY_CourseId, student.getCourseid());
db.insert(DbSchema.TABLE_Student, null, values);
DatabaseManager.getInstance().closeDatabase();
创建表格命令:
public DBHelper( ) {
super(App.getContext(), DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//All necessary tables you like to create will create here
db.execSQL(CourseDbCommands.createTable());
db.execSQL(StudentDbCommands.createTable());
答案 0 :(得分:0)
DbSchema.TABLE_Course + "("
和DbSchema.KEY_CourseId + "PRIMARY KEY
学生表也有相同的间距问题。
DbSchema.TABLE_Student + "("
或
检查课程表中是否已存在学生课程ID
答案 1 :(得分:0)
我在学生表创建命令中看不到任何外键引用。 作为参考,您可以查看此enter link description here
我还假设你已经在课程表中有一些条目用学生表来映射。即在您将具有特定课程的学生插入学生表之前,该课程应该出现在课程表中。
答案 2 :(得分:0)
我想出来我必须手动更改数据库的版本。我以为自动发生了变化。
答案 3 :(得分:0)
public static String createTable(){
return "CREATE TABLE " + DbSchema.TABLE_Student + "("
+ DbSchema.KEY_StudID + " INTEGER PRIMARY KEY ,"
+ DbSchema.KEY_Name_Student + " TEXT, "
+ DbSchema.KEY_Year_Student + " TEXT, "
+ DbSchema.KEY_Email_Student+ " TEXT,"
+ DbSchema.KEY_CourseId+" TEXT )";
}