Java 程序不会从数据库中提取多行
我无法从数据库中提取多行信息。我创建和填充数据库的方式如下:Java 程序不会从数据库中提取多行,java,android,sqlite,android-studio,Java,Android,Sqlite,Android Studio,我无法从数据库中提取多行信息。我创建和填充数据库的方式如下: String KREIRAJ_TABELU = "CREATE TABLE " + IME_TABELE + "(" + ID + " INTEGER PRIMARY KEY," + PITANJE + " TEXT," + PRVI_NETACAN + " TEXT," + DRUGI_NETACAN + " TEXT," + TRECI_NETACAN + " TEXT," + TACAN_ODGO
String KREIRAJ_TABELU = "CREATE TABLE " + IME_TABELE + "("
+ ID + " INTEGER PRIMARY KEY," + PITANJE + " TEXT,"
+ PRVI_NETACAN + " TEXT," + DRUGI_NETACAN + " TEXT," + TRECI_NETACAN + " TEXT," + TACAN_ODGOVOR + " TEXT" + ")";
db.execSQL(KREIRAJ_TABELU);
String dodajPitanjaIOdgovore = "INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (0,\"Ovo je prvo pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");\n" +
"\n" +
"INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (1,\"Ovo je drugo pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");\n" +
"\n" +
"INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (2,\"Ovo je trece pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");\n" +
"\n" +
"INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (3,\"Ovo je cetvrto pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");\n" +
"\n" +
"INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (4,\"Ovo je peto pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");\n" +
"\n" +
"INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (5,\"Ovo je sesto pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");\n" +
"\n" +
"INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (6,\"Ovo je sedmo pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");\n" +
"\n" +
"INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (7,\"Ovo je osmo pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");\n" +
"\n" +
"INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (8,\"Ovo je deveto pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");\n" +
"\n" +
"INSERT INTO pitanja (ID,PITANJE,PRVI_NETACAN,DRUGI_NETACAN,TRECI_NETACAN,TACAN_ODGOVOR)\n" +
"VALUES (9,\"Ovo je deseto pitanje:\",\"Netacan odgovor\",\"Netacan odgovor\",\"Netacan odgovor\",\"Tacan odgovor\");";
db.execSQL(dodajPitanjaIOdgovore);
为了获取数据库值,我创建了以下方法:
public podaciOPitanjima getPitanje(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(IME_TABELE, new String[]{ID, PITANJE, PRVI_NETACAN, DRUGI_NETACAN, TRECI_NETACAN, TACAN_ODGOVOR}, ID + "=?", new String[]{String.valueOf(id)}, null, null, null, null);
podaciOPitanjima podaci = null;
if (cursor.moveToFirst()) {
podaci = new podaciOPitanjima(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5));
}
return podaci;
}
当我想拉全部10行时,我使用这段代码:
private static List<podaciOPitanjima> pitanja = new ArrayList<podaciOPitanjima>();
for(int i = 0; i < 10; i++){
testPitanje = db.getPitanje(i);
if(testPitanje != null){
pitanja.add(testPitanje);
}
}
private static List pitanja=new ArrayList();
对于(int i=0;i<10;i++){
testPitanje=db.getPitanje(i);
if(testPitanje!=null){
添加(testPitanje);
}
}
它正在工作,它正在拉第一个ID的行并放入我的动态数组中,但只是第一行,不是全部10行。为什么?报纸上说:
执行单个SQL语句
因此,您必须为每个语句调用或调用
execSQL()
。(或者打电话,或者。)请给出完整的示例。所有代码必须在类中的方法中,就像在实际代码中一样。还要确保包含所有变量声明。我建议直接使用游标,而不是将数据放入列表中。如果在ListView中显示数据,则应使用游标适配器而不是ArrayAdapter。这是将记录加载到数组中的错误方法,为什么要连续10次查询数据库中的1条记录,将它们全部获取,然后在1次命中中填充整个数组!你能给我一段代码吗?我不太确定如何实现它,关于它有很多问题和示例代码,像这样,但好的一点是CL在下面发布的内容,填充数组的代码应该可以,除非表中只有一行!!,这就是CL在下面的回答中解释的:)在回答完is后不要改变问题。如果您想知道为什么该代码没有被执行,可以问一个新问题(该问题将作为的副本关闭)。