Android でデータベースを作成していますが、すべて順調に進んでいましたが、正しいデータを取得するクエリをテストしていたときにエラーが発生しました。
E/AndroidRuntime(14126): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
クエリに一致するデータがないことを意味することはわかっていますが、実際には、クエリによってデータを挿入したところ、実際には一致しています。同じクエリが、アクセントのないすべてのコードで機能します。
これらは、行を挿入するためのクエリです。
INSERT INTO "codigo" VALUES('A','PEATÓN');
INSERT INTO "codigo" VALUES('B','PEATÓN');
INSERT INTO "codigo" VALUES('C','PEATÓN');
そこで、次のように、置換するフィールドの値を取得するクエリを実行しました。
String selectCode = "select distinct c.tipo from codigo c";
Cursor cursor = database.rawQuery(selectCodigo, new String[] {});
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
String codigo= cursor.getString(0);
codigos.add(codigo);
System.out.println(codigo);
cursor.moveToNext();
}
cursor.close();
return codigos;
そして結果はこれでした:
10-14 16:40:32.140: I/System.out(13716): PEAT�N
/raw フォルダーにテキスト ファイルがあり、Eclipse から編集したので、テーブルのエクスポートではないことを確認しましたが、同じ結果が得られました。
これは、ファイルを読み取るコードです。
public int insertFromFile(SQLiteDatabase db,Context context, int resourceId) throws IOException {
// Reseting Counter
int result = 0;
// Open the resource
InputStream insertsStream = context.getResources().openRawResource(resourceId);
BufferedReader insertReader = new BufferedReader(new InputStreamReader(insertsStream));
// Iterate through lines (assuming each insert has its own line and theres no other stuff)
while (insertReader.ready()) {
String insertStmt = insertReader.readLine();
db.execSQL(insertStmt);
result++;
}
insertReader.close();
// returning number of inserted rows
return result;
}
どうすればそのアクセントを機能させることができますか? 私はそれらの多くを使用しているので、単語を置き換えることは方法ではありません. 助けてください。このプロジェクトを完了するために必要なのはそれだけです。
更新:同じ問題がさらに2回発生しました。最初に、cp1525 でコーディングされた .sql ファイルを操作して修正し、デフォルトのエディターを使用して Eclipse で開き、間違った文字を見つけて置き換えました。
前回このエラーが発生したとき、正しい方法で作成しました.SQLiteManagerを使用している場合、UTF-8でエンコードされたファイルをインポートしますが、ANSIでファイルをエクスポートすることがわかったので、Notepad ++でファイルを開き、 .sql ファイルを ANSI から UTF-8 にエンコードすると、正常に動作し、すべての文字が正常に表示されました。