0

こんばんは、stackoverflowの親切な人々。データベースからすべてのデータを取り出して、TextViewに表示したいと思います。どうすればそれを達成できますか?

さらに、データベースからデータ(すべて)を取り出し、soapメッセージを介して遠く離れたWSに送信したいと思います。WSDLの設定について質問はありませんが、データベースからデータを取得して何度も使用する方法についての情報が必要です。

コードは次のとおりです。

package com.example.prototype2;



import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.support.v4.app.NavUtils;

public class AddGlucose extends Activity implements OnClickListener {

final String LOG_TAG = "myLogs";

Button btnAdd, btnRead, btnClear;
  EditText etGlucose, etTime, etDate;

  DBHelper dbHelper;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_add_glucose);
 // Show the Up button in the action bar.
 setupActionBar();

 btnAdd = (Button) findViewById(R.id.btnAdd);
 btnAdd.setOnClickListener(this);

 btnRead = (Button) findViewById(R.id.btnRead);
 btnRead.setOnClickListener(this);

 btnClear = (Button) findViewById(R.id.btnClear);
 btnClear.setOnClickListener(this);

 etGlucose = (EditText) findViewById(R.id.etGlucose);
 etTime = (EditText) findViewById(R.id.etTime);
 etDate = (EditText) findViewById(R.id.etDate);
 dbHelper = new DBHelper(this);
}

/**
* Set up the {@link android.app.ActionBar}.
*/
private void setupActionBar() {

getActionBar().setDisplayHomeAsUpEnabled(true);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.add_glucose, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
    // This ID represents the Home or Up button. In the case of this
    // activity, the Up button is shown. Use NavUtils to allow users
    // to navigate up one level in the application structure. For
    // more details, see the Navigation pattern on Android Design:
    //
    // http://developer.android.com/design/patterns/navigation.html#up-vs-back
    //
    NavUtils.navigateUpFromSameTask(this);
    return true;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentValues cv = new ContentValues();
String glucose = etGlucose.getText().toString();
String time = etTime.getText().toString();
String date = etDate.getText().toString();

SQLiteDatabase db = dbHelper.getWritableDatabase();

switch (v.getId()) {
case R.id.btnAdd:
  Log.d(LOG_TAG, "--- Insert in mytable: ---");

  cv.put("glucose", glucose);
  cv.put("time", time);
  cv.put("date", date);
long rowID = db.insert("mytable", null, cv);
  Log.d(LOG_TAG, "row inserted, ID = " + rowID);
  break;

case R.id.btnRead:
    Log.d(LOG_TAG, "--- Rows in mytable: ---");
    Cursor c = db.query("mytable", null, null, null, null, null, null, null);
    if (c.moveToFirst()) {
        int idColIndex = c.getColumnIndex("id");
        int glucoseColIndex = c.getColumnIndex("glucose");
        int timeColIndex = c.getColumnIndex("time");
        int dateColIndex = c.getColumnIndex("date");

        do {    

            Log.d(LOG_TAG,
                    "ID = " + c.getInt(idColIndex) + 
                    ", glucose = " + c.getString(glucoseColIndex) +
                    ", time = " + c.getString(timeColIndex) + ", date = " +       c.getString(dateColIndex));
        } while (c.moveToNext());
    } else
        Log.d(LOG_TAG, "0 rows");
    c.close();
    break;

 case R.id.btnClear:
  Log.d(LOG_TAG, "--- Clear mytable: ---");

  int clearCount = db.delete("mytable", null, null);
  Log.d(LOG_TAG, "deleted rows count = " + clearCount);
  break;
}
dbHelper.close();
}

class DBHelper extends SQLiteOpenHelper {

    public DBHelper(Context context) {

      super(context, "mytable", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
      Log.d(LOG_TAG, "--- onCreate database ---");
      // создаем таблицу с полями
      db.execSQL("create table mytable ("
          + "id integer primary key autoincrement," 
          + "glucose text,"
          + "time text," + "date text" + ");");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
  }

 }
4

2 に答える 2

0

非常に優れたSQLiteサンプルコードへのリンクは次のとおりです。http ://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

したがって、データベースに合わせてコードをカスタマイズするだけで済みますが、行要素のカスタムオブジェクト(サンプルコードなど)を作成すると、より簡単で快適になることをお勧めします。

于 2013-03-09T22:57:45.203 に答える
0

1つのクラスに大量のコードを挿入しただけで、赤い線は表示されないようです。これと次のチュートリアルに従って、説明されたコードを必要に応じて変更してください。すべてが完璧に機能し、データベースを設定した後、データベースから情報を取得する方法を学びます。

データベースは非常に重要であるため、データベースを少し占有する必要があります。

Tut 1

于 2013-03-09T23:44:34.223 に答える