2012-03-22 23 views
0

AndroidアプリケーションでSQLiteデータベースから値を取得したいとします。ここで私のプログラムでは、SQLiteに2つの文字列を格納しました。テーブル名は「名前」です。 2番目の部分では、SQLiteデータベースに格納された2つの文字列を取得し、それらを編集テキストフィールドに表示します。しかし、プログラムを実行すると、空の画面しか表示されません。私のコードで解決策や変更をお願いします。SQLiteデータベースから値を取得する

 package com.ret; 

    import java.util.Locale; 

    import android.app.Activity; 
    import android.content.ContentValues; 
    import android.content.Intent; 
    import android.database.Cursor; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.R.id; 

    public class RetriveActivity extends Activity { 
      ContentValues values= new ContentValues(); 
     SQLiteDatabase db; 
     String first="android"; 
     String last="apps"; 
     String f,s; 
     @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    db=openOrCreateDatabase("test5.db",SQLiteDatabase.CREATE_IF_NECESSARY,null); 

    db.setVersion(1); 
    db.setLocale(Locale.getDefault()); 
    db.setLockingEnabled(true); 
    final String table_create="CREATE TABLE name("+"column1 TEXT,"+"column2 TEXT);"; 
    db.execSQL(table_create); 
    values.put("column1",first); 
    values.put("column2",last); 
    db.insert("name", null, values); 
    Cursor c = db.query("name",null,null, null, null, null,null); 
    while(c.moveToFirst()) 
    { 
    f=c.getString(c.getColumnIndex("column1")); 
    s=c.getString(c.getColumnIndex("column2")); 
    db.close(); 
    } 
    EditText e1=(EditText)findViewById(R.id.editText1); 
    e1.setText(""+f+""+s); 
    db.close(); 

    } 
} 
+1

どのようなエラーが表示されますか? dbを2回閉じることに気付きました。具体的な理由は何ですか? –

+0

例外が発生した場合は、エラーログを投稿してください... – Prem

+1

[SQLiteデータベースから値を取得]の可能な複製(http://stackoverflow.com/questions/9803091/retrieve-values-from-sqlite-database) – eldarerathis

答えて

3

この例では、sqliteデータベースからデータを取得する方法を示します。

package com.collabera.labs.sai.db; 

import java.util.ArrayList; 

import android.app.ListActivity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteException; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ArrayAdapter; 

public class CRUDonDB extends ListActivity { 

    private final String SAMPLE_DB_NAME = "myFriendsDb"; 
    private final String SAMPLE_TABLE_NAME = "friends"; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     ArrayList<String> results = new ArrayList<String>(); 
     SQLiteDatabase sampleDB = null; 

     try { 
      sampleDB = this.openOrCreateDatabase(SAMPLE_DB_NAME, MODE_PRIVATE, null); 

      sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " + 
        SAMPLE_TABLE_NAME + 
        " (LastName VARCHAR, FirstName VARCHAR," + 
        " Country VARCHAR, Age INT(3));"); 

      sampleDB.execSQL("INSERT INTO " + 
        SAMPLE_TABLE_NAME + 
        " Values ('Makam','Sai Geetha','India',25);"); 
      sampleDB.execSQL("INSERT INTO " + 
        SAMPLE_TABLE_NAME + 
        " Values ('Chittur','Raman','India',25);"); 
      sampleDB.execSQL("INSERT INTO " + 
        SAMPLE_TABLE_NAME + 
        " Values ('Solutions','Collabera','India',20);"); 

      Cursor c = sampleDB.rawQuery("SELECT FirstName, Age FROM " + 
        SAMPLE_TABLE_NAME + 
        " where Age > 10 LIMIT 5", null); 

      if (c != null) { 
       if (c.moveToFirst()) { 
        do { 
         String firstName = c.getString(c.getColumnIndex("FirstName")); 
         int age = c.getInt(c.getColumnIndex("Age")); 
         results.add("" + firstName + ",Age: " + age); 
        }while (c.moveToNext()); 
       } 
      } 

      this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,results)); 

     } catch (SQLiteException se) { 
      Log.e(getClass().getSimpleName(), "Could not create or Open the database"); 
     } finally { 
      if (sampleDB != null) 
       sampleDB.execSQL("DELETE FROM " + SAMPLE_TABLE_NAME); 
       sampleDB.close(); 
     } 
    } 
} 
+0

ありがとうあなたの指示は、それが正常に取り戻されたことを私に助けてくれた.thanks –

+0

それから、他人にも役立つように私の答えを受け入れるべきだ。答えの右側に緑色のチェックマークがあります。ちょうどそれをチェックしてください。 – Mahesh

+0

ありがとう – Mahesh

0

それはplsは最初のINSERT文の後に、あなたのデシベルを閉じて、再度開き、カーソル行を書き、その後に動作しない場合は

db = db.getWritableDatabase();   
     db.execSQL(table_create); 
     values.put("column1",first); 
     values.put("column2",last); 
     db.insert("name", null, values); 
String columns[]={"column1","column2"}; 
     Cursor c = db.query("name",columns,null, null, null, null,null); 

...あなたのコードでは、以下の変更を試してみてください。

関連する問題