SQLite的Android的没有这样的表列students.studentId [英] SQlite Android no such table columns students.studentId
问题描述
我觉得我几乎把我的时间在网上寻找可能的解决我的问题。我成功地插入一个学生和一个主题,但两个表获取数据时,它会导致程序崩溃,并显示错误没有这样的栏目。
请帮我。
创建表
私有静态最后弦乐CREATE_TABLE_SUBJECT =CREATE TABLE
+ TABLE_SUBJECT +(+ SUBJECT_ID +INTEGER PRIMARY KEY,+ SUBJECT_NAME
+TEXT+ SUBJECT_SCHEDULE +TEXT+ SUBJECT_FILELOCATION
+TEXT+);私有静态最后弦乐CREATE_TABLE_STUDENT =CREATE TABLE
+ TABLE_STUDENT +(+ SUBJECT_ID +INTEGER PRIMARY KEY,+ STUDENT_NAME
+TEXT+);私有静态最后弦乐CREATE_TABLE_FUSION =CREATE TABLE
+ TABLE_FUSION +(+ FUSION_ID +INTEGER PRIMARY KEY,+ SUBJECT_ID
+INTEGER,+ student_id数据+INTEGER+);
我从两个表显示数据查询
公开名单<的Student GT; getAllStudnetsBySubject(长ID){
清单<的Student GT;主题=新的ArrayList<的Student GT;();
字符串selectQuery =SELECT * FROM+ TABLE_STUDENT +学生
+ TABLE_SUBJECT +科目,+ TABLE_FUSION +融合WHERE科目。
+ SUBJECT_ID +=+身份证+'+和科目。 + SUBJECT_ID
+=+融合。 + FUSION_ID +和学生。 + student_id数据+=
+融合。 + FUSION_ID; SQLiteDatabase分贝= this.getReadableDatabase();
光标C = db.rawQuery(selectQuery,NULL);
如果(c.moveToFirst()){
做{
学生S =新的学生();
s.setStudentId(c.getInt((c.getColumnIndex(student_id数据))));
s.setStudentName((c.getString(c.getColumnIndex(STUDENT_NAME))));
subject.add(多个);
}而(c.moveToNext());
} 回到主题;
}
logcat的错误
7月2日至27日:00:32.938:E / DatabaseHelper(20727):SELECT * FROM学生的学生,学科科目,融合融合WHERE subjects.subject_id ='1'和科目。 subject_id = fusions.id AND students.student_id = fusions.id
7月2日至27日:00:32.948:E / SQLiteLog(20727):(1)没有这样的列:students.student_id
字符串EntryA =将String.valueOf(db.getentry(Ravirrrr,KEY_Team_Name));
更改为
字符串EntryA =将String.valueOf(db.getentry(Ravirrrr,_Team_Name));
KEY_Team_Name
是一个变量在你的sqlite的助手,其中包含列名_ TEAM_NAME
的值。你不想要的文本字符串KEY_Team_Name
。
I think I almost spend my time searching in the web for the possible solution to my problem. I successfully inserted a student and a subject but when getting the data from the two tables, it will cause to crash the program and display an error "no such columns".
Please help me.
Creating tables
private static final String CREATE_TABLE_SUBJECT = "CREATE TABLE "
+ TABLE_SUBJECT + "(" + SUBJECT_ID + " INTEGER PRIMARY KEY," + SUBJECT_NAME
+ " TEXT," + SUBJECT_SCHEDULE + " TEXT," + SUBJECT_FILELOCATION
+ " TEXT" + ")";
private static final String CREATE_TABLE_STUDENT = "CREATE TABLE "
+ TABLE_STUDENT + "(" + SUBJECT_ID + " INTEGER PRIMARY KEY," + STUDENT_NAME
+ " TEXT" + ")";
private static final String CREATE_TABLE_FUSION = "CREATE TABLE "
+ TABLE_FUSION + "(" + FUSION_ID + " INTEGER PRIMARY KEY," + SUBJECT_ID
+ " INTEGER," + STUDENT_ID +" INTEGER" + ")";
My query for displaying data from two tables
public List<Student> getAllStudnetsBySubject(long id) {
List<Student> subject = new ArrayList<Student>();
String selectQuery = "SELECT * FROM " + TABLE_STUDENT + " students, "
+ TABLE_SUBJECT + " subjects, " + TABLE_FUSION + " fusions WHERE subjects."
+ SUBJECT_ID + " = '" + id + "'" + " AND subjects." + SUBJECT_ID
+ " = " + "fusions." + FUSION_ID + " AND students." + STUDENT_ID + " = "
+ "fusions." + FUSION_ID;
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery(selectQuery, null);
if (c.moveToFirst()) {
do {
Student s = new Student();
s.setStudentId(c.getInt((c.getColumnIndex(STUDENT_ID))));
s.setStudentName((c.getString(c.getColumnIndex(STUDENT_NAME))));
subject.add(s);
} while (c.moveToNext());
}
return subject;
}
LOGCAT ERROR
02-27 07:00:32.938: E/DatabaseHelper(20727): SELECT * FROM student students, subject subjects, fusion fusions WHERE subjects.subject_id = '1' AND subjects.subject_id = fusions.id AND students.student_id = fusions.id
02-27 07:00:32.948: E/SQLiteLog(20727): (1) no such column: students.student_id
String EntryA =String.valueOf( db.getentry("Ravirrrr", "KEY_Team_Name"));
Change this to
String EntryA =String.valueOf( db.getentry("Ravirrrr", "_Team_Name"));
KEY_Team_Name
is a variable in your sqlite helper the value of which contains the column name "_Team_Name"
. You don't want the literal string "KEY_Team_Name"
.
这篇关于SQLite的Android的没有这样的表列students.studentId的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!