Cómo obtener un valor de la base de datos y mostrarlo en una vista de texto en android

Im muy apesadumbrado para pedir esta duda simple. Apenas comenzado a androide y ahora estudiando las secciones de la base de datos en androide.

Creé una base de datos con el nombre "libros" y con el nombre de la tabla "títulos".

Luego arrastrar y soltar la base de datos en la sección de activos en el proyecto.

Ahora quiero buscar un valor de la base de datos (cualquier valor de las cinco columnas) y mostrar en la vista de texto.Puede alguien por favor me ayude a hacer esto.

A continuación se muestra el código utilizado para leer la base de datos.

import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBAdapter { public static final String KEY_ROWID = "_id"; public static final String KEY_ISBN = "isbn"; public static final String KEY_TITLE = "title"; public static final String KEY_PUBLISHER = "publisher"; private static final String TAG = "DBAdapter"; private static final String DATABASE_NAME = "books"; private static final String DATABASE_TABLE = "titles"; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE = "create table titles (_id integer primary key autoincrement, " + "isbn text not null, title text not null, " + "publisher text not null);"; private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS titles"); onCreate(db); } } //---opens the database--- public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this; } //---closes the database--- public void close() { DBHelper.close(); } //---insert a title into the database--- public long insertTitle(String isbn, String title, String publisher) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_ISBN, isbn); initialValues.put(KEY_TITLE, title); initialValues.put(KEY_PUBLISHER, publisher); return db.insert(DATABASE_TABLE, null, initialValues); } //---deletes a particular title--- public boolean deleteTitle(long rowId) { return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; } //---retrieves all the titles--- public Cursor getAllTitles() { return db.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_ISBN, KEY_TITLE, KEY_PUBLISHER}, null, null, null, null, null); } //---retrieves a particular title--- public Cursor getTitle(long rowId) throws SQLException { Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] { KEY_ROWID, KEY_ISBN, KEY_TITLE, KEY_PUBLISHER }, KEY_ROWID + "=" + rowId, null, null, null, null, null); if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; } //---updates a title--- public boolean updateTitle(long rowId, String isbn, String title, String publisher) { ContentValues args = new ContentValues(); args.put(KEY_ISBN, isbn); args.put(KEY_TITLE, title); args.put(KEY_PUBLISHER, publisher); return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0; } } 

Main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> 

DatabaseActivity.java

 import android.app.Activity; import android.os.Bundle; public class DatabaseActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 

Introduzca aquí la descripción de la imagen

Esperando su ayuda. Gracias de antemano.

Crear clase y ampliarla con contentProvider y usarla como esta

 public class XyzDB extends ContentProvider { static Context context; private SQLiteOpenHelper mOpenHelper; public XyzDB() {} public XyzDB(Context context) { XyzDB.context = context; mOpenHelper = new DatabaseHelper(context); mOpenHelper.getWritableDatabase(); } 

Y también crear una clase dentro de XyzDB como este

 private static class DatabaseHelper extends SQLiteOpenHelper { //create table here } 

Y luego poner el siguiente método

Tienes que buscar datos desde el cursor en la clase de ayuda de la base de datos. Tienes que crear un método como este y devolver el valor del cursor.

 public Cursor fetchData() { SQLiteDatabase mDB = mOpenHelper.getWritableDatabase(); Cursor mCursor; mCursor = mDB.rawQuery("Select * from table, null); return mCursor; } 

Y crear un objeto de clase ayudante de base de datos en su actividad y llamar a este método y buscar los datos del cursor como este

 Cursor c = jDB.fetchDataByID(id); if(c.moveToFirst()) { do { id = c.getInt(0); }while(c.moveToNext()); } c.close(); 

Y el conjunto de identificación o cualquier valor en la vista de texto.

Y siga este enlace

http://www.vogella.de/articles/AndroidSQLite/article.html

Voy a dar u un ejemplo con la ayuda de que u puede entender fácilmente cómo podemos mostrar los datos de la base de datos en un textview. A continuación se muestra el código en el que el testdata es el nombre de la base de datos que tiene tabla de usuario en la que están presentes 2 columnas. I mostrar los datos de estas 2 columnas en 2 diff. Textviews.

 public class high_score extends Activity{ SQLiteDatabase mydatabase=null; String Data=""; String Data1=""; String TableName="users"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.high_score); RelativeLayout main=(RelativeLayout)findViewById(R.id.main); try { mydatabase=this.openOrCreateDatabase("testdata", MODE_PRIVATE, null); Cursor c=mydatabase.rawQuery("SELECT DISTINCT name,score FROM "+TableName+" , null); int column1=c.getColumnIndex("name"); int column2=c.getColumnIndex("max_score"); c.moveToFirst(); if(c!=null) { do { String Name=c.getString(column1); int Score=c.getInt(column2); Data=Data+Name+"\n"; Data1=Data1+Score+"\n"; System.out.println("name"+Name+" score"+Score); }while(c.moveToNext()); TextView tv=(TextView)findViewById(R.id.tv); TextView points=(TextView)findViewById(R.id.points); tv.setText(Data); points.setText(Data1); setContentView(main); } /*TextView tv=(TextView)findViewById(R.id.tv); tv.setText(Data); setContentView(tv);*/ }catch(Exception ex) { Log.e("ERROR","ERROR" ,ex); } finally { if(mydatabase!=null) mydatabase.close(); } 

Puede acceder fácilmente a los datos como este

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.