私のプログラムはオプションテーブル(ボリューム、振動など)を既に設定(挿入)している場合、オプションテーブルをチェックすることを想定しています。基本的に、オプションが設定されていない場合、テーブルの最初の列は0です。最初の行が空の場合は、デフォルトのオプションに切り替え、それ以外の場合はオプションの設定に切り替えます。私はトライキャッチで私のオプションチェッカーを囲むAN、このエラーが表示されます。私は私のコードは私のニーズに正しいかはわからないのでAndroid - カーソルインデックスの範囲外の例外
CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0.
は、私はまだ、このSQLものに初心者くさいですよ。私DBFunctionsに
options = new DBFunctions(this);
try{
String row = "0".toString();
long l = Long.parseLong(row);
options.open();
String retId = options.getId(l);
int id = Integer.parseInt(retId);
options.close();
//codes for setting the options if/if no data in option table exists will be put here
}catch(Exception e){
String error = e.toString();
tv.setText(error);
}
これは私のgetId(ある):
これはOnCreate関数での私のオプションチェッカー()です。 Javaの:あなたは(0行)は空であり、これはその例外をスローCursor
からデータを取得しようとしている
public String getId(long l) {
String[] columns = new String[]{"id", "volume", "vibrate", "theme"};
Cursor c = db.query(table, columns, "id=" + l, null, null, null, null);
if(c !=null){
c.moveToFirst();
String id = c.getString(1);
return id;
}
return null;
}
`
おかげ.. :)私はすでに値を示すためのボタンを作成しようと、それが意味している、私は、入力されたすべてのデータを表示します私の挿入コードは正しいです。それから、私のバリューチェッカー(上記の私のコード)を試しましたが、それでもエラーが表示されます。私はまた、私が探している行(前は0)を1に変更しようとしましたが、まだエラーを表示しています.. –
@PhilipSyあなたのデータをチェックし、あなたのデータベースに持っているIDを入れてクエリに使用します。問題は、あなたが何をやろうとしているのか分からないということです。ユーザーはデータベースに設定を挿入します(1つ、多くのものなど!)が、最初の行が空の場合(?!) !? – Luksprog
"私はあなたの質問の最初の部分をデータベースに挿入されていない/挿入されていないことを理解していないし、デフォルトに切り替えるので、あなたが望むことをする方法を言うことができます。 - つまり、初めてアプリを使用すると、デフォルトオプション(Vibrations-On、Volume-Onなど)が設定されます。あなたのオプションを設定すると、前もって設定したかどうかがチェックされます。オプションテーブルに値があることが検出された場合はオプションを更新するだけで、値がなければ挿入されます。基本的には、私のオプションテーブルは1行だけでなければなりません。 –