2012-03-05 3 views
0

現在、サービスステーションの名前と座標のリストを格納するデータベースを作成しています。しかし、私はビューボタンをクリックすると、データベースを表示することはできません。ここに私のコードです: `新しいアクティビティでデータベースの結果をどのように表示しますか?

public String getData() 
    { 
     // TODO Auto-generated method stub 
     String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_COORDINATES}; 
     Cursor c = myDatabase.query(DATABASE_NAME, columns, null, null, null, null, null); 
     String result = ""; 

     int iRow = c.getColumnIndex(KEY_ROWID); 
     int iName = c.getColumnIndex(KEY_NAME); 
     int iCoordinates = c.getColumnIndex(KEY_COORDINATES); 

     for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) 
     { 
      result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString(iCoordinates) + "\n"; 



     } 

     return result; 
    }` 

誰もこのコードに問題がありますか?

+0

:このようなあなたのループを実行します。あなたが得た例外、そしてどの行にあるのか。 –

+0

あなたはどこかでデータを印刷しますか?テキストビュー?どこか? – Ivan

+0

新しいアクティビティでは、私のデータベースの結果にtextviewを次のコードで設定しました。 'TextView tv =(TextView)findViewById(R.id.tvSqlInfo); \t ステーション情報=新しいステーション(this); info.open(); 文字列データ= info.getData(); info.close(); tv.setText(data); ' – devinefergal

答えて

0

カーソルに行が含まれていない可能性があります。その場合、c.getString()は例外をスローします。

moveToFirst()はエラー時にfalseを返します。私たちは本当にのように、あなたが直面している問題を確認する必要が

if (c.moveToFirst()) 
{ 
do 
{ 
    result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString + "\n"; 
} while (c.moveToNext()) 
} 

これは実際にはそうであるならば、あなたはあなたのテーブルが行を持っていない理由に対処することができます...

+0

これは、カーソル上で繰り返す本当に長時間の方法です。代わりに 'while(c.moveToNext()){...}'を実行してください。 –

+0

私の問題は、DATABASE_NAMEの代わりにDATABASE_NAMEを使用していたことです – devinefergal

関連する問題