[英]SQLite, Tables, Joining
Android,實現SQLite
這些是我有的表:
http://postimg.org/image/jafsx39h7/
我有代碼:
public String getWorkoutNameInfo() {
// TODO Auto-generated method stub
String[] columns = new String[] { KEY_DATE_OF_WORKOUT,
KEY_WORKOUT_NAME, KEY_DATE };
Cursor c = ourDatabase.query(TABLE_DATE_WORKOUT, columns, null, null,
null, null, null, null);
String workoutName2 = "";
int iWorkoutID = c.getColumnIndex(KEY_WORKOUT_NAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
workoutName2 = workoutName2 + c.getString(iWorkoutID);
}
return workoutName2;
}
這將返回值為“ 2 1 2”的executionName2
現在,我需要在WorkoutTable中查找2的值,然后返回“ Back”並生成“ Back,Chest,Back”,這樣我就可以將其放到屏幕上而不是2 1 2了。
我知道我將使用JOIN語句嗎? 但是我沒有實現它的運氣。
我的表格編碼:
// WORKOUT TABLE - COLUMN NAMES
public static final String KEY_WORKOUT = "workout_id";
public static final String STRING_WORKOUT = "workout_name";
// DATE OF WORKOUT TABLE - COLUMN NAMES
public static final String KEY_DATE_OF_WORKOUT = "date_of_workout_id";
public static final String KEY_DATE = "date_of_workout";
public static final String KEY_WORKOUT_NAME = "workout_id";
//TABLE NAMES
private static final String TABLE_WORKOUT = "WorkoutTable";
private static final String TABLE_DATE_WORKOUT = "DateofWorkout";
這是我的嘗試:
public String test(String workoutSelectedNameInfo) {
// TODO Auto-generated method stub
String NAMEofWorkout = "";
open();
ourDatabase = ourhelper.getReadableDatabase();
Cursor c = ourDatabase
.rawQuery(
"SELECT * FROM WorkoutTable LEFT JOIN DateofWorkout ON (WorkoutTable.workout_id = DateofWorkout.workout_id) WHERE workout_id = ?",
new String[] { "2" });
int iDateofWorkoutsWorkoutId = c.getColumnIndex(KEY_WORKOUT_NAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
NAMEofWorkout = NAMEofWorkout + c.getString(iDateofWorkoutsWorkoutId);
}
c.close();
ourDatabase.close();
System.out.println(NAMEofWorkout);
return NAMEofWorkout;
}
但是,當它輸出“ NameofWorkout”(應該是胸部,背部,胸部)時,我什么也收不到,絕對是空白。
當我將數據輸入到計算機上的SQLite實例中並執行查詢時,出現以下錯誤:
錯誤:列名稱不明確:executive_id
在查詢中,將WHERE workout_id
更改為WHERE DateofWorkout.workout_id
可使錯誤消失。
發生此問題的原因是結果中有兩列名為workout_id
列,並且您必須消除后續引用的歧義。 因此,您可能還必須更改
c.getColumnIndex(KEY_WORKOUT_NAME)
至
c.getColumnIndex(TABLE_DATE_WORKOUT + "." + KEY_WORKOUT_NAME)
當您稍后使用結果時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.