如何从数据库中选择列并在android文本视图中显示?
我是android编程新手,我尝试在文本视图中显示我的select查询结果,在过去的3天里我一直在尝试这样做,但它仍然不起作用;这是我的密码:如何从数据库中选择列并在android文本视图中显示?,android,sql,sqlite,Android,Sql,Sqlite,我是android编程新手,我尝试在文本视图中显示我的select查询结果,在过去的3天里我一直在尝试这样做,但它仍然不起作用;这是我的密码: f.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub db.o
f.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
db.open();
Cursor c = db.getWord(find.getText().toString());
c.moveToFirst();
String[] from = {DBManager.KEY_ENGLISH};
int[] to = {R.id.TVTrans};
SimpleCursorAdapter a = new SimpleCursorAdapter(StartingPoint.this, R.layout.dic, c, from, to);
show.setText(a.convertToString(c));
db.close();
}
});
这是我的db函数,最后一个中的getWord(String bahahsaIndo)是我想要使用的函数
public class DBManager {
public static final String KEY_ROWID = "_id";
public static final String KEY_BAHASA = "bahasa";
public static final String KEY_ENGLISH = "english";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "dict";
private static final String DATABASE_TABLE = "words";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table " + DATABASE_TABLE + " (_id integer primary key autoincrement, "
+ KEY_BAHASA + " text not null, " + KEY_ENGLISH + " text not null"
+ ");";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBManager(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 DBManager 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 bahasaIndo, String englishLang)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_BAHASA, bahasaIndo);
initialValues.put(KEY_ENGLISH, englishLang);
return db.insert(DATABASE_TABLE, null, initialValues);
}
//---retrieves all the titles---
public Cursor getAll()
{
return db.rawQuery("select * from " + DATABASE_TABLE, null);
/*return db.query(DATABASE_TABLE, new String[] {
KEY_ROWID,
KEY_BAHASA,
KEY_ENGLISH,
null},
null,
null,
null,
null,
null);*/
}
public Cursor getWord(String bahasaIndo){
return db.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE " + KEY_BAHASA + " = '" + bahasaIndo+"'", null);
}
}
最后,这是我的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">
<EditText
android:id="@+id/ETFind"
android:layout_height="wrap_content"
android:text="Type the word that you want to find...."
android:layout_width="wrap_content">
</EditText>
<TextView
android:text="@+id/TextView01"
android:id="@+id/TVTrans"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/bFind"
android:text="Find">
</Button>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/bSpeak"
android:text="Speak">
</Button>
</LinearLayout>
任何帮助都将被告知:)
测试代码:
@Override
public void onClick(View v) {
DBManager manager = new DBManager(this);
manager.open();
Random random = new Random();
if (random.nextBoolean()) {
Log.d("TAG", "Insert Value");
manager.insertTitle("bahasaindo", "english");
manager.insertTitle("bahasaindo" + random.nextInt(), "english1");
} else {
Log.d("TAG", "query value");
Cursor cursor = manager.getWord("bahasaindo");
if (cursor.moveToFirst()) {
Log.d("TAG", cursor.getString(cursor.getColumnIndex(DBManager.KEY_BAHASA)));
}
}
manager.close();
}
谢谢你的回答,但我还是什么也看不出来。你介意检查一下我的问题吗?因为,我认为问题是存在的,但我不知道如何解决它-谢谢,它确实有效。但是,textView被一个空字符串更改了,我认为查询没有返回任何内容-谢谢你需要在db中添加一些数据,是的,我已经做了,数据在那里,但是textfield仍然没有给出预期的结果,textfield插入了一个空的设置你可以调试代码,查看查询结果,也许你什么都没有查询,因为查询select与数据库中的任何行都不匹配。
@Override
public void onClick(View v) {
DBManager manager = new DBManager(this);
manager.open();
Random random = new Random();
if (random.nextBoolean()) {
Log.d("TAG", "Insert Value");
manager.insertTitle("bahasaindo", "english");
manager.insertTitle("bahasaindo" + random.nextInt(), "english1");
} else {
Log.d("TAG", "query value");
Cursor cursor = manager.getWord("bahasaindo");
if (cursor.moveToFirst()) {
Log.d("TAG", cursor.getString(cursor.getColumnIndex(DBManager.KEY_BAHASA)));
}
}
manager.close();
}