2014-11-16 8 views
0

Я не могу получить данные из моей базы данных в android. Когда я пытаюсь получить данные, он просто возвращает пустое значение. Любая идея о том, что вызывает ошибку. присоединили код ниже:Невозможно получить данные из базы данных в 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()); 
      } 
     }); 
    } 

ответ

-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()); 
+0

Я добавил c.movetofirst() .. но все же я получаю ошибку .. Когда я пытаюсь поджарить первые значения столбца, я получаю пустое значение. – santhej

+0

Пожалуйста, разместите свой логарифм :) –

+0

У меня нет ошибки ... что я имею в виду, тост просто отображает пустое значение. – santhej

-1

Я думаю, вам нужно вызвать db.setTransactionSuccessful() после вставки совершить записи в базу данных

+0

Я пробовал эту программу .. неожиданно неожиданно остановилась ... она выдала ошибку, потому что нет текущей транзакции – santhej

+0

Это понадобится только после 'BeginTransaction()'. –

0

Первая строка имеет пустое значение.

Это связано с тем, что переменные name и number считываются в onCreate, когда два EditTexts еще не содержат значения.

Вы должны прочитать эти значения только при нажатии кнопки, то есть в методе onClick.

+0

Но он не использует эти значения в 'b2' (' SELECT' query) –

+0

Но при вставке. Значения в БД ошибочны. –

+0

Но он не спрашивает, что ... (без обид) :) –

Смежные вопросы