我有这个DatabaseCreator Java文件。
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataBaseCreator extends SQLiteOpenHelper {
private static String DB_PATH = "/GetInspiredAndHaveFun/assets/Jokes.db";
private static String DB_NAME = "Jokes.db";
private static int DB_VERSION = 1;
public static String DATABASE_TABLE = "myjoke";
private SQLiteDatabase myDataBase;
private final Context myContext;
public DataBaseCreator(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.myContext = context;
}
public void openDatabase() throws IOException {
boolean dbe = checkDataBase();
if (dbe) {
Log.i("Tag", "dbe" + dbe);
} else {
Log.i("Tag", "dbdoesnotexist" + dbe);
this.getReadableDatabase();
copyDataBase();
}
}
private void copyDataBase() throws IOException {
InputStream inp = myContext.getAssets().open(DB_NAME);
String ofn = DB_PATH + DB_NAME;
OutputStream oup = new FileOutputStream(ofn);
byte[] buffer = new byte[1024];
int length;
while ((length = inp.read(buffer)) > 0) {
oup.write(buffer, 0, length);
}
oup.flush();
inp.close();
oup.close();
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
}
catch (SQLiteException e) {
}
return checkDB != null ? true : false;
}
public void openDataBase() throws SQLException{
//Open the database
String myPath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
这是我想要访问它的内容。
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
public class Jokes extends Activity {
{
DataBaseCreator myDbHelper = new DataBaseCreator(this);
myDbHelper = new DataBaseCreator(this);
try{
myDbHelper.copyDataBase();
}
catch (IOException ioe) {
throw new Error("Unable to create database");
}
myDbHelper.openDataBase();
}
}
我的Jokes.java文件中有一个实例。如何访问存储在笑话中的笑话并将其显示在textview(逐个)Any Nice编程方式中?
答案 0 :(得分:0)
首先,您的数据库应该包含任何内容。所以添加Columns到它。我建议使用id
autoincrement
,也可以name
作为开头
您需要在数据库中查询它并迭代光标
一个简单的查询就是从数据库中获取所有元素。它看起来像这样:
Cursor cursor = database.query(TABLE_NAME,allColumns, null, null, null, null,null);
它确实返回一个光标。这是一个列表,您可以使用moveToNext()
进行迭代。从每个光标您都可以获得值。因此,如果您开始查询,您可能会看到最后一个ID。首先cursor.moveToFirst()
。它确实指向查询中的第一个元素。现在,您可以使用指向它的给定光标从第一行获取值
如果您拥有ID和名称,则可以通过cursor.getString(1)
从查询的第一个元素中获取名称。整数表示从光标所在的行获取的列。
我希望这是可以理解的。我的英语今天不是最好的。 (请随时改进!) 小迭代示例
String temp = "";
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
temp += curso.getString(1);
cursor.moveToNext();
}