0
이 SQLite 쿼리가 있습니다 :android sqlite union, 테이블에서 결과를 검색하는 방법?
Cursor orgiCursor = orgiDb.rawQuery("select task,taskDate from meeting where exists
(select `meeting.taskId from Task, meeting where meeting.taskId = Task.taskId and task.name='"+profName+"')
UNION SELECT subject,date from taskDeadline where exists (select taskDeadline.taskId from taskDeadline,Task where taskDeadline.taskId=Task.taskId and Task.name='"+profName+"') union select
specificOccassion,setDate from AnnualTask where exists (select taskId from Task,AnnualTask where Task.taskId = AnnualTask.taskId and Task.name = '"+profName+"' and AnnualTask.setDate<>'--')", null);
그것은 꽤 오래지만 정말 SQLite 관리자에서 작동합니다. 내 문제는 데이터를 가져 오는 중에 오류가 발생한다는 것입니다. 다음은 내 코드 스 니펫입니다.
try {
if (orgiCursor != null) {
if (orgiCursor.moveToFirst()) {
do {
String annualTask = orgiCursor.getString(orgiCursor.getColumnIndex("specificOccassion"));
String annualDate = orgiCursor.getString(orgiCursor.getColumnIndex("setDate"));
String meetingTask = orgiCursor.getString(orgiCursor.getColumnIndex("task"));
String meetingDate = orgiCursor.getString(orgiCursor.getColumnIndex("taskDate"));
String deadlineTask = orgiCursor.getString(orgiCursor.getColumnIndex("subject"));
String deadlineDate = orgiCursor.getString(orgiCursor.getColumnIndex("date"));
SearchResults sr2=new SearchResults();
sr2.setName(meetingTask);
sr2.settDate(meetingDate);
results.add(sr2);
SearchResults sr3 = new SearchResults();
sr3.setName(deadlineTask);
sr3.settDate(deadlineDate);
results.add(sr3);
SearchResults sr1 = new SearchResults();
sr1.setName(annualTask);
sr1.settDate(annualDate);
Log.i("Home","added"+annualTask + " & " +annualDate);
results.add(sr1);
} while (orgiCursor.moveToNext());
}
}
} catch (SQLiteException se) {
displayError1(se.toString());
Log.e(getClass().getSimpleName(), se.toString());
} finally {
if (orgiDb != null) {
orgiDb.close();
Log.e(getClass().getSimpleName(),"orgiDB closed()");
}
}
return results;
이 오류를 반환합니다. :(제발 도와주세요 .
02-12 19:28:00.809: INFO/Database(14515): sqlite returned: error code = 1, msg = ambiguous column name: taskId
02-12 19:28:00.849: ERROR/AndroidRuntime(14515): Caused by: android.database.sqlite.SQLiteException: ambiguous column name: taskId: , while compiling: select task,taskDate from meeting where exists (select meeting.taskId from Task, meeting where meeting.taskId = Task.taskId and task.name='Maria Ozawa')UNION SELECT subject,date from taskDeadline where exists (select taskDeadline.taskId from taskDeadline,Task where taskDeadline.taskId=Task.taskId and Task.name='Maria Ozawa') union select specificOccassion,setDate from AnnualTask where exists (select taskId from Task,AnnualTask where Task.taskId = AnnualTask.taskId and Task.name = 'Maria Ozawa' and AnnualTask.setDate<>'--')
02-12 19:28:01.059: ERROR/Database(14515): close() was never explicitly called on database '/data/data/orgy.organizer.home/databases/orgi'
02-12 19:28:01.059: ERROR/Database(14515): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
어떤 도움을 크게 주시면 감사하겠습니다 ... :( 내 질문은 :
1. 코드의 어느 부분을 정확하게 연결/커서를 닫을 필요합니까?
2. Eclipse에서이 오류를 표시하는 이유 SQLite Manager에서이 동일한 명령문을 실행 해 보았지만 아무런 결과가 없었습니다.
고맙습니다. 나는 오늘 그것을 시도 할 것이다. :) – kreigh
그것이 작동하는지 알려주세요! :디 – scambione