无法从android中的数据库中检索数据

时间:2014-11-16 07:04:22

标签: android sqlite android-sqlite

我无法从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());
            }
        });
    }

3 个答案:

答案 0 :(得分:0)

第一行的值为空。

这是因为当两个EditTexts尚未包含值时,namenumber中的变量将被读取。

只有在点击按钮时,即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()将记录提交到数据库