Java 在Eclipse(Android)中连接数据库(SQLITE)文件
我正在开发一个问答游戏,但我有一个现有的数据库文件,其中有问题和选项。。我如何在我的程序中连接它。Java 在Eclipse(Android)中连接数据库(SQLITE)文件,java,android,sqlite,Java,Android,Sqlite,我正在开发一个问答游戏,但我有一个现有的数据库文件,其中有问题和选项。。我如何在我的程序中连接它。 我如何执行查询以在文本视图中显示问题,并在按钮中显示选项。制作问答游戏的分步指南: 第1步: 首先从SQLite管理器创建数据库。制作一列主要索引,第二列问题,以及第三、第四、第五、第六列选项。对于相同字符串的正确答案(用于正确答案的比较),再增加一列。如图所示: 在资产文件夹中复制粘贴此filename.sqlite 第二步: 为获取和设置数据库的Getter Setters创建一个新类。它应
我如何执行查询以在文本视图中显示问题,并在按钮中显示选项。制作问答游戏的分步指南: 第1步: 首先从
SQLite管理器
创建数据库。制作一列主要索引,第二列问题,以及第三、第四、第五、第六列选项。对于相同字符串的正确答案(用于正确答案的比较),再增加一列。如图所示:
在资产文件夹中复制粘贴此filename.sqlite
第二步:
为获取和设置数据库的Getter Setters创建一个新类。它应该包含您试图获取的所有字段。
第三步:
创建一个扩展SQLiteOpenHelper
的DBAdapter类。使用此代码:
public class DBAdapter extends SQLiteOpenHelper
{
static String name = "kbcquiz.sqlite";
static String path = "";
static ArrayList<kbc> a;
static SQLiteDatabase sdb;
@Override
public void onCreate(SQLiteDatabase db)
{
// Your database is already Created, so no need to add anything here
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
// Database Not upgraded here
}
private DBAdapter(Context v)
{
super(v, name, null, 1);
path = "/data/data/" + v.getApplicationContext().getPackageName() + "/databases";
}
public boolean checkDatabase()
{
SQLiteDatabase db = null;
try
{
db = SQLiteDatabase.openDatabase(path + "/" + name, null, SQLiteDatabase.OPEN_READONLY);
} catch (Exception e)
{
e.printStackTrace();
}
if (db == null)
{
return false;
}
else
{
db.close();
return true;
}
}
public static synchronized DBAdapter getDBAdapter(Context v)
{
return (new DBAdapter(v));
}
public void createDatabase(Context v)
{
this.getReadableDatabase();
try
{
InputStream myInput = v.getAssets().open(name);
// Path to the just created empty db
String outFileName = path +"/"+ name;
// Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
// transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0)
{
myOutput.write(buffer, 0, length);
}
// Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
} catch (IOException e)
{
System.out.println(e);
}
}
public void openDatabase()
{
try
{
sdb = SQLiteDatabase.openDatabase(path + "/" + name, null,
SQLiteDatabase.OPEN_READWRITE);
} catch (Exception e)
{
System.out.println(e);
}
}
// Method for fetching Data and storing it into ArrayList
public ArrayList<kbc> getQuestions()
{
//question is the table name, you can also use "SELECT * FROM question" in case
Cursor c1 = sdb.rawQuery("SELECT * FROM question ORDER BY RANDOM()", null);
a = new ArrayList<kbc>();
while (c1.moveToNext())
{
kbc q1 = new kbc(); // kbc is the getter setter class
//the below code can vary upon ur getter-setter methods & variables
q1.setSno(c1.getInt(0));
q1.setQuestion(c1.getString(1));
q1.setA(c1.getString(2));
q1.setB(c1.getString(3));
q1.setC(c1.getString(4));
q1.setD(c1.getString(5));
q1.setAnswer(c1.getString(6));
a.add(q1);//--Always remember to add the fetched elements of type ArrayList<GetterGetter>
}
return a;
}
}
要从arraylist获取任何字符串,请使用q.get(0).getQuestion(),q.get(0).getA(),q.get(0).getB(),q.get(0).getC(),q.get(0).getD()
更改索引以获取不同的列&将该文本设置为TextView或Button
单击选择的答案,您可以通过以下方式检查正确性:
if(btn4.getText().toString().equals(q.get(e).getAnswer().toString()))
{
// correct answer
//Use it for changing color,managing indexing, etc..
}
输出:
希望这有帮助!
干杯请发布您的密码或澄清您的问题,然后我将帮助您..先生,您在POC中的意思是什么?@Warde您是如何填写此数据库的?例如,我有问题,但它们在文本中。你知道文本到sqlite的任何简单技巧吗,或者有任何程序可以自动执行吗?你有文本中的问题,你可以在sqlite管理器中键入,如第一张图片所示
if(btn4.getText().toString().equals(q.get(e).getAnswer().toString()))
{
// correct answer
//Use it for changing color,managing indexing, etc..
}