다음과 같은 도움을 주시면 감사하겠습니다 : SOLVED I AM AN IDIOT! - 나는 2 개의 로그 태그를 가지고 있는데 하나는 인터페이스에, 다른 하나는 활동에있다. 디버그에서 인터페이스 태그를 모니터링하면서 activity 태그가 포함되어 있다고 생각했습니다. 따라서 나는 인터페이스의 결과 만 보았고 그 결과는 보지 못했습니다. 따라서 나는 그 활동이 "인터페이스로부터의 복귀를 얻지 못했다"라고 생각했다 - 미안하다. 도움을 주려고하는 사람들 덕택입니다.sqlite가 커서를 호출 활동으로 되 돌리지 않았습니다.
레코드 수를 얻으려면 검색을 호출하십시오 (예 : dbHelper.getNumberOfRecords(); - dbHelper.findManyRecords (aNameDateRecord, "name", "Sarah")) - 데이터베이스에서 많은 레코드를 가져 오려면)를 databaseHelper 및 다른 "인터페이스"클래스를 통해 활동에서 sqlite 데이터베이스에 저장합니다. 검색 작동 (나는 디버그 "TAG"에서 결과를 볼 수 있습니다 .- 문제는 결과가 호출 작업에 "반환"해야하지만 그들은 are'nt합니다. 왜이 일이 일어나고 있는지에 대 한 어떤 도움을 많이 주시면 감사하겠습니다. . 아래에 감사 참조하십시오 코드 : "인터페이스"클래스의
부분 ... 헬퍼 클래스의
public class DatabaseInterface{
private static final String TAG = "HelloDatePicker";
private static final String TableName = "t_namesAndDates";
private static final String RowId = "_id";
private static final String Col_name = "name";
private static final String Col_date = "date";
private Context context;
private DatabaseHelper dbHelper;
private SQLiteDatabase database;
public DatabaseInterface(Context context){
this.context = context;
}
//open the database
public DatabaseInterface open(){
dbHelper = new DatabaseHelper(context);
database = dbHelper.getWritableDatabase();
return this;
}
//close the database
public DatabaseInterface close(){
dbHelper.close();
return this;
}
//get number of records in database
public int getNumberOfRecords(){
open();
String sql = "SELECT * FROM " + TableName;
Cursor cursor = database.rawQuery(sql, null);
int numberOfRecords = cursor.getCount();
cursor.close();
close();
Log.i(TAG, "HelloDatePicker-getNumberOfRecords **** " + numberOfRecords);
return numberOfRecords;
}
//search for many records
public Cursor findManyRecords(NameDateRecord aNameDateRecord, String columnName, String whereClause){
open();
Log.i(TAG, "HelloDatePicker-column aNameDateRecord = " + aNameDateRecord + " columnName = " + columnName + " whereClause = " + whereClause);
/*
String selection = columnName;
Log.i(TAG, "HelloDatePicker-column name = " + columnName + " whereClause = " + whereClause);
String[] selectionArgs = new String[] {"Sarah"};//searches on a name
String[] columns = new String[] {"_id","name","date"};
for(int i=0;i<selectionArgs.length;i++)
Log.i(TAG, "HelloDatePicker-selectionArgs = " + selectionArgs[i]);
//Cursor cursor = database.query(TableName, columns, " name = ", selectionArgs, null, null, null);
*/
String sql = "SELECT * FROM " + TableName + " WHERE name = 'Sarah'";
Cursor c = database.rawQuery(sql, null);
Log.i(TAG, "HelloDatePicker-getNumberOfRecords @@@@@@ " + c.getCount());
c.moveToFirst();
while (c.moveToNext()) {
// Your code
Log.i(TAG, "HelloDatePicker- id = " + c.getInt(c.getColumnIndex(RowId)) + " name " + c.getString(c.getColumnIndex(Col_name)) + " date = " +
c.getInt(c.getColumnIndex(Col_date)));
}
Log.i(TAG, "HelloDatePicker-findManyRecords");
close();
return c;
}
부분 ...
public class DatabaseHelper extends SQLiteOpenHelper{
private static final String TAG = "HelloDatePicker";
private static final String DBname = "db_date";
private static final String TableName = "t_namesAndDates";
private static int versionNumber = 1;
//the constructor
public DatabaseHelper(Context context) {
super(context, DBname, null, versionNumber);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase database) {
//create table once on installation of app
String columns = "(_id integer primary key autoincrement,name text not null,date integer)";
String sql = "CREATE TABLE " + TableName + columns;
Log.i(TAG, "HelloDatePicker-create database-sql = " + sql);
database.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
// Logs that the database is being upgraded
Log.i(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
// Kills the table and existing data
database.execSQL("DROP TABLE IF EXISTS notes");
// Recreates the database with a new version
onCreate(database);
}
}
마지막으로 활동하다 검색 결과가 어디에서 왔는지 ...
public class HelloDatePicker extends Activity {
private static final String TAG = "datepicker";
private static final String RowId = "_id";
private static final String Col_name = "name";
private static final String Col_date = "date";
private TextView mDateDisplay;
private Button mPickDate;
private int mYear;
private int mMonth;
private int mDay;
private DatabaseInterface dbHelper;
NameDateRecord aNameDateRecord;
static final int DATE_DIALOG_ID = 0;
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(TAG, "in onCreate HelloDatePicker");
dbHelper = new DatabaseInterface(this);
//to get number of records in database
int numberRecords = dbHelper.getNumberOfRecords();
Log.i(TAG, "number of records in database &&&&&& " + numberRecords);
//to search for records
dbHelper = new DatabaseInterface(this);
Cursor c = dbHelper.findManyRecords(aNameDateRecord, "name", "Sarah");
Log.i(TAG, "HelloDatePicker-getNumberOfRecords +++++ " + c.getCount());
c.moveToFirst();
while (c.moveToNext()) {
// Your code
Log.i(TAG,"HelloDatePicker- id = " + c.getInt(c.getColumnIndex(RowId)) + " name "
+ c.getString(c.getColumnIndex(Col_name))
+ " date = " + c.getInt(c.getColumnIndex(Col_date)));
감사합니다.
관련
데이터베이스를 닫은 후 커서를 반환하는 것 같습니다
오류를 더 분명하게 보이게하십시오. 전체 소스를 살펴 보지 마십시오. – JoxTraex
커서 객체가 null이거나 비어 있음을 의미합니까? –