2014-11-16 4 views
0

안드로이드에서 데이터베이스에서 데이터를 검색 할 수 없습니다. 데이터를 검색하려고하면 빈 값이 반환됩니다 .. 어떤 아이디어가 오류를 일으키는 지 .. ..i 아래 첨부 코드 :안드로이드 데이터베이스에서 데이터를 검색 할 수 없습니다.

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

당신의 logcat를 게시하십시오 :) –

+0

나는 오류가 발생하지 않습니다 ... 나는 토스트가 단지 빈 값을 표시한다는 것을 의미합니다. – santhej

-1

난 당신이 데이터베이스에 기록을 저지하기 위해 삽입 후 db.setTransactionSuccessful()를 호출 할 필요가 있다고 생각

+0

나는이 .. 시도 프로그램이 예기치 않게 ... 현재 트랜잭션이 없기 때문에 오류가 수행 할 수 없습니다 준 – santhej

+0

이것은 후에 필요합니다 'beginTransaction()'. –

0

첫 번째 행의 값이 비어 있습니다.

변수 namenumber은 두 EditText에 아직 값이 포함되어 있지 않을 때 onCreate으로 읽혀지기 때문입니다.

버튼을 클릭 한 경우에만 (예 : onClick 방법)이 값을 읽어야합니다.

+0

하지만 그는 그 값을'b2'에서 사용하지 않습니다 ('SELECT' 쿼리) –

+0

하지만 삽입 할 때. DB의 값이 잘못되었습니다. –

+0

하지만 그는 물어 보지 않습니다. (no offense) : –

관련 문제