gpt4 book ai didi

android - 如何从数据库中获取一个值并将其显示在android中的 TextView 中

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:18 26 4
gpt4 key购买 nike

我很抱歉提出这个简单的问题。我刚开始接触android,现在正在研究android中的数据库部分。

我创建了一个名为“books”和表名为“titles”的数据库。

然后我将数据库拖放到项目的 Assets 部分。

现在我想从数据库中获取一个值(五列中的任何值)并显示在 TextView 中。任何人都可以帮助我如何做到这一点。

下面是我用来读取数据库的代码。

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;
}
}

主.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>

数据库 Activity .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);
}

}

enter image description here

希望得到您的帮助。在此先致谢。

最佳答案

创建类并使用 contentProvider 扩展它并像这样使用它

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();
}

并像这样在 XyzDB 中创建一个类

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

}

然后放入下面的方法

您必须从数据库助手类中的游标获取数据。您必须像这样创建方法并返回游标值。

public Cursor fetchData()
{
SQLiteDatabase mDB = mOpenHelper.getWritableDatabase();

Cursor mCursor;
mCursor = mDB.rawQuery("Select * from table, null);

return mCursor;
}

并在您的 Activity 中创建数据库助手类对象并调用此方法并像这样从游标中获取数据

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

}while(c.moveToNext());
}
c.close();

并在 TextView 中设置 id 或任何值。

并点击此链接

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

关于android - 如何从数据库中获取一个值并将其显示在android中的 TextView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com