我无法从android中的数据库中检索数据。当我尝试检索数据时,它只返回一个空白值。不知道是什么导致错误..我附上了以下代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exp3);
b1=(Button)findViewById(R.id.button1);
b2=(Button)findViewById(R.id.button2);
e1=(EditText)findViewById(R.id.editText1);
e2=(EditText)findViewById(R.id.editText2);
tv=(TextView)findViewById(R.id.textView3);
final String name=e1.getText().toString();
final String number=e2.getText().toString();
db=openOrCreateDatabase("Students.db",Context.MODE_PRIVATE,null);
db.execSQL("CREATE TABLE IF NOT EXISTS studentdb(rollno VARCHAR,name VARCHAR);");
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
db.execSQL("INSERT INTO STUDENTDB VALUES('"+name+"','"+number+"');");
Toast.makeText(getApplicationContext(), "Successfully inserted the entry", Toast.LENGTH_LONG).show();
}
});
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Cursor c=db.rawQuery("SELECT * FROM STUDENTDB", null);
StringBuffer buffer=new StringBuffer();
while(c.moveToNext())
{
Toast.makeText(getApplicationContext(), c.getString(0), Toast.LENGTH_LONG).show();
}
tv.setText(buffer.toString());
}
});
}
答案 0 :(得分:0)
第一行的值为空。
这是因为当两个EditTexts尚未包含值时,name
和number
中的变量将被读取。
只有在点击按钮时,即onCreate
方法中,您才必须阅读这些值。
答案 1 :(得分:-1)
您忘了拨打moveToFirst
方法:
Cursor c=db.rawQuery("SELECT * FROM STUDENTDB", null);
c.moveToFirst(); //here
StringBuffer buffer=new StringBuffer();
while(c.moveToNext())
{
Toast.makeText(getApplicationContext(), c.getString(0), Toast.LENGTH_LONG).show();
}
tv.setText(buffer.toString());
答案 2 :(得分:-1)
我认为您需要在插入后调用db.setTransactionSuccessful()
将记录提交到数据库