我想在Android应用程序中从SQLite数据库中检索值。在我的程序中首先我将两个字符串存储到SQLite中,我的表名是'name'。在第二部分中,我检索两个存储在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();
}
}
答案 0 :(得分: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();
}
}
}
答案 1 :(得分:0)
在您的代码中尝试以下修改..
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);
如果它不起作用,那么请先在insert语句后关闭db,然后再次打开它并写入光标。