2017-10-11 19 views
0

私はアンドロイドの開発者ページを読んでいて、rawQuery()またはexecSql()を使ってクエリを実行する方法について話しました。私は他の多くのチュートリアルサイトでこの特定のメソッドを見ていません。 オブジェクトとdbhelperクラスのクラスを使用せずにsqliteデータベースからデータベースを読み込んで読み込む方法はありますか?

は私が相続人のコードを同じ

を実装しようとした:

作成:

SQLiteDatabase db1 = openOrCreateDatabase("Station.db", SQLiteDatabase.CREATE_IF_NECESSARY , null); 
    try{ 
     String query = "CREATE TABLE IF NOT EXISTS Station (" 
       + "Station_name VARCHAR);"; 
     db1.execSQL(query); 
     Toast.makeText(MainActivity.this, "Table created", Toast.LENGTH_LONG).show(); 
     for(i=0;i<10;i++) 
     { 
      Toast.makeText(MainActivity.this, stations[i][0],Toast.LENGTH_SHORT).show(); 
      query="INSERT INTO Station (Station_name) VALUES('"+stations[i][0]+"');"; 
      Toast.makeText(MainActivity.this, query,Toast.LENGTH_LONG).show(); 
      db1.execSQL(query); 

     } 
    }catch (Exception e){ 
     Toast.makeText(MainActivity.this, "An Error has occured", Toast.LENGTH_LONG).show(); 
    } 

取得:作成コードは1の作品

SQLiteDatabase db = openOrCreateDatabase("Station.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); 
     setContentView(R.layout.activity_list_view); 
     Cursor data_fetch = db.rawQuery("Select * From Station", null); 
     String[] station_array = new String[data_fetch.getCount()]; 
     int i = 0; 
     while (data_fetch.moveToNext()) { 
      String name = data_fetch.getString(data_fetch.getColumnIndex("Station_name")); 
      station_array[i] = name; 
      i++; 
     } 
     ArrayAdapter station_adapter = new ArrayAdapter<String>(this, R.layout.activity_list_view, station_array); 
     ListView station_listView = (ListView) findViewById(R.id.station_list); 
     station_listView.setAdapter(station_adapter); 
    } 

ながら行います取得するにはない。どんな考え?

Android Developer Page For Sqlite

+0

ここでは「うまくいかない」という意味を広げてください – laalto

+0

これまでにアクティビティを呼び出すとアプリがクラッシュするだけです。「残念なことにこのアプリは停止しました」 –

+0

logcatには何がうまくいかなかったのか、どこに。 https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this – laalto

答えて

0

私はあなたの問題は、あなたが使用している方法は、データベースファイルへの文字列のパスを期待していると思います。それは.dbファイルへの絶対ファイルパスを期待するかもしれません(私はjavaDocをチェックしましたが、それは言及しません)、単にファイルをデバイス全体でどこに置くことができるのかわからないので、名前を渡すだけで動作しません。チュートリアルのようにDB Helperクラスを使いたくない理由は何でしょうか?これは、Android上でSQLデータベースを使用する標準的なパターンです。このパターンを使用するのは非常にシンプルでクリアなので、多くのチュートリアルで同じパターンを使用しているため、Android上のSQLでコードexmaplesを表示する際に役立ちます。たとえば、アプリのコンテンツプロバイダを提供する場合、AndroidチュートリアルではDBHelperオブジェクトを使用するのと同じスキームを使用します。また、DB Helperは、簡単にDBをアップグレードできる方法を公開しています。ここでも、共通パターンではなく、SQLiteDatabaseを直接使用することで、達成したいことがすべて得られます。

+0

悪いことに絶対パスを追加しようとすると、なぜ私はクラスを使用しないのですか?クラスは私のレベルで理解するにはあまりにも複雑すぎると私はeasly今これを理解することができます –

+0

あなたは新しいですJavaまたはOOPに? これは、ヘルパーを使用する正確な理由です。それはまた、複雑な相互作用がいくつかあるクラスでもあります。 APIのドキュメント「データベース作成とバージョン管理を管理するためのヘルパークラス」のとおりです。あなたが直面している問題を解決します。 –

関連する問題