안드로이드에서 SQLite 데이터베이스가 어떻게 작동하는지 개념을 이해하는데 어려움이 있습니다. 나는이 작업을 수행하고, ADB 콘솔을 사용하여 확인되었습니다 알고 있어요 마찬가지로 지금까지안드로이드와 자바의 SQLite 데이터베이스
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "library.db";
public static final String TITLE = "title";
public static final String MUSICTITLE = "musictitle";
public static final String AUTHOR = "author";
public static final String ARTIST = "artist";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE music (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, artist TEXT);");
db.execSQL("CREATE TABLE books (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, author TEXT);");
db.execSQL("CREATE TABLE movies (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
android.util.Log.v("Constants",
"Upgrading database which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS books");
db.execSQL("DROP TABLE IF EXISTS music");
db.execSQL("DROP TABLE IF EXISTS movies");
onCreate(db);
}
}
: 나는 다음과 같이있는 DatabaseHelper.java 클래스를 만들었습니다.
제 질문은 어떻게 다른 활동에서 응용 프로그램 내 에서이 데이터베이스를 쿼리합니까, 예를 들어, 내 응용 프로그램에서 데이터베이스를 쿼리 할 수 있습니다 : SELECT title FROM books; 책 테이블의 제목을 반환합니다. 데이터베이스에 연결하여이 쿼리를 실행 한 다음 모든 결과를 배열에 저장하는 방법은 무엇입니까?
---------------------------------- 편집 ---------------------------------- 편집 ----------- -----------------------------
바로 내가 쿼리 할 부분에서이 코드를 배치했습니다.
if (category.equals("Books")){
img.setImageResource(R.drawable.book);
ArrayList<String> list = new ArrayList<String>();
dh = new DatabaseHelper(this);
SQLiteDatabase db = dh.getReadableDatabase();
Cursor cursor = db.query("books", new String[] { "title" }, null, null, null, null, "title desc");
if (cursor.moveToFirst()) {
do {
list.add(cursor.getString(1));
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
list.add("Test");
cont_array = (String[]) list.toArray();
db.close();
}
이전 활동을 카테고리로 전달합니다. 올리비에의 대답에서. 이 코드는 응용 프로그램을 충돌시키고 나는 그 이유를 모릅니다. 변수 cont_array는이 if 문 다음에 사용되어 ListView를 채 웁니다. 아무도 내가 잘못 가고있는 어떤 생각이 있어도 LogCat에 오류가있는 곳을 알려주는 것이 아무것도 없습니까?
코드를 사용한 후에도 내 질문을 편집했지만 여전히 오류가 있습니다. – SamRowley
구체적인 오류 메시지가 없으면 말하기 어렵습니다. 그러나 코드에는 공통적 인 함정이 하나 있습니다. 'cont_array = (String []) list.toArray (new String [list.size()])' –
나는이 문제를 분류했다. 그러나 데이터 가져 오기가 아무것도 가져 오지 않는 것 같다. , 그래서 list.add (cursor.getString (0)); 아무것도하지 않는 것 같습니다. TextView를 사용하여이 테스트를 수행 한 결과를 해당 텍스트 뷰로 가져 왔지만 false를 반환합니다. – SamRowley