我正在开发一个存储主题和讲座数据的应用程序。我在app.insertion主题已经完成了一个严重的问题但由于sqlite错误我无法插入讲座。
这是合约类代码
public class TimeTableContract {
public static abstract class SubjectInfo {
public static final String TABLE_NAME_SUBJECT="subject_info";
public static final String SUBJECT_NAME="subject_name";
public static final String TEACHER_NAME="teacher_name";
}
public static abstract class LectureInfo {
public static final String TABLE_NAME_LECTURE="lecture_info";
public static final String DAY_NAME="day_name";
public static final String SUBJECT_NAME="subject_name";
public static final String START_HOUR="start_hour";
public static final String START_MINUTE="start_minute";
public static final String END_HOUR="end_hour";
public static final String END_MINUTE="end_minute";
public static final String ROOM_NO="room_no";
}}
以下是DBHelper类的代码
public class SubjectDbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME="TIME_TABLE";
private static final int DATABASE_VERSION=1;
private static final String CREATE_QUERY_SUBJECT="CREATE TABLE IF NOT EXISTS "+TimeTableContract.SubjectInfo.TABLE_NAME_SUBJECT+"("+TimeTableContract.SubjectInfo.SUBJECT_NAME+
" TEXT,"+TimeTableContract.SubjectInfo.TEACHER_NAME+" TEXT);";
private static final String CREATE_QUERY_LECTURE="CREATE TABLE IF NOT EXISTS "+ TimeTableContract.LectureInfo.TABLE_NAME_LECTURE+ "("+
TimeTableContract.LectureInfo.DAY_NAME + " TEXT," +
TimeTableContract.LectureInfo.SUBJECT_NAME +" TEXT," +
TimeTableContract.LectureInfo.START_HOUR +" INTEGER," +
TimeTableContract.LectureInfo.START_MINUTE +" INTEGER," +
TimeTableContract.LectureInfo.END_HOUR +" INTEGER," +
TimeTableContract.LectureInfo.END_MINUTE +" INTEGER," +
TimeTableContract.LectureInfo.ROOM_NO +" TEXT);";
public SubjectDbHelper(Context context)
{
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_QUERY_SUBJECT);
db.execSQL(CREATE_QUERY_LECTURE);
Log.d("DATABASE", "Subject table created");
}
public void addSubject(String subname,String teachername,SQLiteDatabase db_sub)
{
ContentValues contentValues_sub=new ContentValues();
contentValues_sub.put(TimeTableContract.SubjectInfo.SUBJECT_NAME,subname);
contentValues_sub.put(TimeTableContract.SubjectInfo.TEACHER_NAME, teachername);
db_sub.insert(TimeTableContract.SubjectInfo.TABLE_NAME_SUBJECT, null, contentValues_sub);
Log.d("DATABASE", "1 row inserted");
}
public void addLecture(String dName,String sName,int sHour,int sMin,int eHour,int eMin,String room_no,SQLiteDatabase db_lec)
{
ContentValues contentValues_lec=new ContentValues();
contentValues_lec.put(TimeTableContract.LectureInfo.DAY_NAME,dName);
contentValues_lec.put(TimeTableContract.LectureInfo.SUBJECT_NAME,sName);
contentValues_lec.put(TimeTableContract.LectureInfo.START_HOUR,sHour);
contentValues_lec.put(TimeTableContract.LectureInfo.START_MINUTE,sMin);
contentValues_lec.put(TimeTableContract.LectureInfo.END_HOUR,eHour);
contentValues_lec.put(TimeTableContract.LectureInfo.END_MINUTE,eMin);
contentValues_lec.put(TimeTableContract.LectureInfo.ROOM_NO,room_no);
db_lec.insert(TimeTableContract.LectureInfo.TABLE_NAME_LECTURE,null,contentValues_lec);
Log.d("DATABASE","lecture inserted");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+ TimeTableContract.SubjectInfo.TABLE_NAME_SUBJECT);
db.execSQL("DROP TABLE IF EXISTS "+ TimeTableContract.LectureInfo.TABLE_NAME_LECTURE);
onCreate(db);
}}
最后是addLecture类的代码
public class addLecture extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
TimeTableContract timeTableContract;
Context context=this;
SQLiteDatabase sqLiteDatabase_lec;
public void Lecture(View view)
{
if(view.getId()==R.id.btn_cancel) {
finish();
}
else if(view.getId()==R.id.btn_save)
{
int start_h=shour;
int start_min=sminute;
int end_h=ehour;
int end_min=eminute;
String room_no=edit_room_no.getText().toString();
SubjectDbHelper subjectDbHelper_lec = new SubjectDbHelper(context);
sqLiteDatabase_lec = subjectDbHelper_lec.getWritableDatabase();
subjectDbHelper_lec.addLecture(spinner_item_day,spinner_item_subject,start_h,start_min,end_h,end_min,room_no,sqLiteDatabase_lec);
Toast.makeText(getBaseContext(),"Lecture Inserted",Toast.LENGTH_LONG).show();
subjectDbHelper_lec.close();
clearText();
finish();
}
}
public void clearText()
{
edit_start_time.setText("");
edit_end_time.setText("");
edit_room_no.setText("");
}}
现在,当我尝试单击“保存”按钮时,logcat窗口显示以下消息:
05-12 08:55:59.902 1756-1756/com.example.kishan.navigation_material E/SQLiteLog﹕ (1) table lecture_info has no column named start_minute
05-12 08:55:59.912 1756-1756/com.example.kishan.navigation_material E/SQLiteDatabase﹕ Error inserting start_minute=55 subject_name=rajesh room_no=gg start_hour=8 day_name=Monday end_minute=55 end_hour=9
android.database.sqlite.SQLiteException: table lecture_info has no column named start_minute (code 1): , while compiling: INSERT INTO lecture_info(start_minute,subject_name,room_no,start_hour,day_name,end_minute,end_hour) VALUES (?,?,?,?,?,?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
at com.example.kishan.navigation_material.SubjectDbHelper.addLecture(SubjectDbHelper.java:63)
at com.example.kishan.navigation_material.addLecture.Lecture(addLecture.java:147)
表示它在后续行中显示错误
subjectDbHelper_lec.addLecture(spinner_item_day,spinner_item_subject,start_h,start_min,end_h,end_min,room_no,sqLiteDatabase_lec);
和
db_lec.insert(TimeTableContract.LectureInfo.TABLE_NAME_LECTURE,null,contentValues_lec);
我执行了 subjectDbHelper.close();
主题插入后是否会产生问题??
也
INSERT INTO lecture_info(start_minute,subject_name,room_no,start_hour,day_name,end_minute,end_hour)VALUES(?,?,?,?,?,?,?)
以上行显示的是不同于我指定的顺序列中的插入值。 请帮我找出导致此错误的问题。 任何帮助都非常感谢。 谢谢