我的数据库中有两个表,我使用内部联接将满足条件的数据打印到LogCat。 我敢肯定,这只是一个愚蠢的错误。
原因:
Caused by: android.database.sqlite.SQLiteException: no such column: position.id (code 1 SQLITE_ERROR): , while compiling: select people.name as Name, position.name as Position, salary as Salary from people inner join position on people.posid = position.id where salary > ?
我如何创建两个表:
public static final String TABLE_POSITION = "position";
public static final String TABLE_PEOPLE = "people";
public static final String KEY_ID = "id";
public static final String KEY_NAME = "name";
public static final String KEY_SALARY = "salary";
public static final String KEY_POSID = "posid";
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_POSITION + "(" + KEY_ID + " integer primary key," + KEY_NAME + " text," + KEY_SALARY + " integer" + ");");
db.execSQL("create table " + TABLE_PEOPLE + "(" + KEY_ID + " integer primary key autoincrement," + KEY_NAME + " text," + KEY_POSID + " integer" + ");");
}
我如何填写位置表:
cursor = sqLiteDatabase.query(databaseHelper.TABLE_POSITION,null,null,null,null,null,null);
if(cursor.getCount() == 0){
for(int i = 0; i < position_id.length; i++){
contentValues.put(databaseHelper.KEY_ID,position_id[i]);
contentValues.put(databaseHelper.KEY_NAME,position_name[i]);
contentValues.put(databaseHelper.KEY_SALARY,position_salary[i]);
sqLiteDatabase.insert(databaseHelper.TABLE_POSITION,null,contentValues);
}
}
cursor.close();
位置表数据:
int[] position_id = { 1, 2, 3, 4 };
String[] position_name = { "CEO", "Programmer", "Teacher", "Policeman" };
int[] position_salary = { 15000, 13000, 10000, 8000 };
人员数据表:
String[] people_name = { "Ivan", "Maria", "Petr", "Anton", "Daria", "Boris", "John", "Suzy" };
int[] people_posid = { 2, 3, 2, 2, 3, 1, 2, 4 };
此行错误:
String sqlQuery = "select people.name as Name, position.name as Position, salary as Salary from people inner join position on people.posid = position.id where salary > ?";
cursor = sqLiteDatabase.rawQuery(sqlQuery,new String[]{"12000"});
logCursor(cursor); //priting out cursor to LOG.d
cursor.close();
我知道没有自动增量的id也是自动增量的,但是我建议我必须知道位置表中用于内部联接的id。那么,如何解决这个错误呢?我知道这只是主键/自动递增错误
答案 0 :(得分:0)
解决了people.posid = position._id ..但表中没有数据..(经过两个小时的思考)