2014-12-10 15 views
0

sqlite 데이터베이스를 만들었고 버튼 클릭으로 데이터베이스에 입력 된 데이터를 보려고했습니다. 버튼 클릭은 새로운 활동을 열고 텍스트 뷰에 데이터를 표시하지만 아무 일도 일어나지 않을 것입니다. 제 코드에 어떤 문제가 있는지 말해주세요. 감사.SQLite 데이터베이스에서 데이터를 가져올 수 없습니다.

View.java

package com.firstproject.aditya; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class View extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view); 
     TextView tv= (TextView)findViewById(R.id.tvSQLinfo); 
     Database info= new Database(this); 
     info.open(); 
     String data=info.getData(); 
     info.close(); 
     tv.setText(data); 
    } 



} 

Activity2.java

package com.firstproject.aditya; 

import android.app.Activity; 
import android.app.Dialog; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class Activity2 extends Activity implements View.OnClickListener { 
    Button startDate, targetDate, remDate, save, cancel; 
    TextView goalInfo, title, des, stDate, tgDate,rdDate; 
    EditText edTitle; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.act2); 
     initialize(); 
     startDate.setOnClickListener(this); 
     cancel.setOnClickListener(this); 
     targetDate.setOnClickListener(this); 
     save.setOnClickListener(this); 
     remDate.setOnClickListener(this); 

     /* 
     * Bundle gotBasket = getIntent().getExtras(); String 
     * gotBread1=gotBasket.getString("key"); edsd.setText(gotBread1); 
     */ 

    } 

    private void initialize() { 
     // TODO Auto-generated method stub 
     startDate = (Button) findViewById(R.id.bStart); 
     targetDate = (Button) findViewById(R.id.bTarg); 
     remDate = (Button) findViewById(R.id.brem); 
     save = (Button) findViewById(R.id.bsave); 
     cancel = (Button) findViewById(R.id.bcancel); 
     goalInfo = (TextView) findViewById(R.id.tvGI); 
     title = (TextView) findViewById(R.id.tvTitle); 
     stDate = (TextView) findViewById(R.id.textViewStartDate); 
     tgDate = (TextView) findViewById(R.id.textViewTargetDate); 
     rdDate = (TextView) findViewById(R.id.textViewReminderDate); 

     edTitle = (EditText) findViewById(R.id.editText1); 


    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 

     switch(requestCode){ 
     case (0):{ 
      if (resultCode == RESULT_OK) { 
       Bundle bsket = data.getExtras(); 
       String s = bsket.getString("answer"); 
       stDate.setText(s); 
     } 
      break; 
     } 

     case (2):{ 
      if (resultCode == RESULT_OK) { 
       Bundle bsket = data.getExtras(); 
       String s = bsket.getString("answer"); 
       tgDate.setText(s); 
      } 
      break; 
     } 

     case (1):{ 
      if (resultCode == RESULT_OK) { 
       Bundle bsket = data.getExtras(); 
       String s = bsket.getString("answer"); 
       rdDate.setText(s); 
      } 
      break; 
     } 
     } 


    } 


    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if (v == cancel) { 
      Intent canc = new Intent("com.firstproject.aditya.ACTIVITY1"); 
      startActivity(canc); 
     } 

     if (v == startDate) { 
      Intent sdate = new Intent(Activity2.this,DatePick.class); 
      startActivityForResult(sdate,0); 
     } 

     if (v == targetDate) { 
      Intent tdate = new Intent(Activity2.this,DatePick.class); 
      startActivityForResult(tdate,2); 
     } 

     if (v == remDate) { 
      Intent rdate = new Intent(Activity2.this,DatePick.class); 
      startActivityForResult(rdate,1); 
     } 

    switch(v.getId()){ 
    case R.id.bsave: 
       boolean didItWork=true; 
      try{ 
       String gTitle=edTitle.getText().toString(); 
       String dateS=stDate.getText().toString(); 
       String dateT=tgDate.getText().toString(); 
       String dateR=rdDate.getText().toString(); 
       Database entry =new Database(Activity2.this); 
       entry.open(); 
       entry.createEntry(gTitle,dateS,dateT,dateR); 
       entry.close(); 
      }catch(Exception e){ 
       didItWork=false; 
       String error=e.toString(); 
       Dialog d =new Dialog(this); 
       d.setTitle("Dang it!"); 
       TextView txtV=new TextView(this); 
       txtV.setText(error); 
       d.setContentView(txtV); 
       d.show(); 

      }finally{ 
       if(didItWork){ 
        Dialog d =new Dialog(this); 
        d.setTitle("Heck Yeah!"); 
        TextView txtV=new TextView(this); 
        txtV.setText("Success"); 
        d.setContentView(txtV); 
        d.show(); 
       } 
      } 
      break; 

    case R.id.bview: 
     Intent i=new Intent("com.firstproject.aditya.VIEW"); 
     startActivity(i); 
     break; 
     } 
    } 

} 

Database.java는

package com.firstproject.aditya; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteOpenHelper; 

public class Database { 

    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_TITLE = "goals_title"; 
    public static final String KEY_STDATE = "start_date"; 
    public static final String KEY_TGDATE = "target_date"; 
    public static final String KEY_RDDATE = "reminder_date"; 

    private static final String DATABASE_NAME = "GoalInformation"; 
    private static final String DATABASE_TABLE = "GoalTable"; 
    private static final int DATABASE_VERSION = 1; 


    private DbHelper ourHelper; 
    private final Context ourContext; 
    private android.database.sqlite.SQLiteDatabase ourDatabase; 

    private static class DbHelper extends SQLiteOpenHelper { 

     public DbHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     public void onCreate(android.database.sqlite.SQLiteDatabase db) { 
      // TODO Auto-generated method stub 
      db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID 
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_TITLE 
        + " TEXT NOT NULL, " + KEY_STDATE + " TEXT NOT NULL, " 
        + KEY_TGDATE + " TEXT NOT NULL, " + KEY_RDDATE 
        + " TEXT NOT NULL);" 

      ); 
     } 

     @Override 
     public void onUpgrade(android.database.sqlite.SQLiteDatabase db, 
       int oldVersion, int newVersion) { 
      // TODO Auto-generated method stub 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
      onCreate(db); 
     } 

    } 

    public Database(Context c) { 
     ourContext = c; 
    } 

    public Database open() throws SQLException { 
     ourHelper = new DbHelper(ourContext); 
     ourDatabase = ourHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close() { 
     ourHelper.close(); 
    } 

    public long createEntry(String gTitle, String dateS, String dateT, 
      String dateR) { 
     // TODO Auto-generated method stub 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_TITLE, gTitle); 
     cv.put(KEY_STDATE, dateS); 
     cv.put(KEY_TGDATE, dateT); 
     cv.put(KEY_RDDATE, dateR); 
     return ourDatabase.insert(DATABASE_TABLE, null, cv); 
    } 

    public String getData() { 
     // TODO Auto-generated method stub 
     String[] columns = new String[] { KEY_ROWID, KEY_TITLE, KEY_STDATE, 
       KEY_TGDATE, KEY_RDDATE }; 
     Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, 
       null, null); 
     String result = ""; 

     int iRow = c.getColumnIndex(KEY_ROWID); 
     int iTitle = c.getColumnIndex(KEY_TITLE); 
     int iStdate = c.getColumnIndex(KEY_STDATE); 
     int iTgdate = c.getColumnIndex(KEY_TGDATE); 
     int iRddate = c.getColumnIndex(KEY_RDDATE); 

     for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
      result = result + c.getString(iRow) + " " + c.getString(iTitle) 
        + " " + c.getString(iStdate) + " " + c.getString(iTgdate) 
        + " " + c.getString(iRddate) + "\n"; 
     } 

     return result; 
    } 
} 
+0

버튼에 대해 이야기하고 있습니다. 아무런 클릭 이벤트도 등록하지 않았습니다. –

+0

@Sajan Chandran : 예, Intent i = 새로운 의도 ("com.firstproject.aditya.VIEW"); – Carnal

+0

데이터베이스에서 데이터를 가져 와서 데이터베이스 열기 데이터베이스에 데이터를 열어야 할 때 : getReadableDatabase() 및 getWritableDatabase() –

답변

0

나는이 답변이 도움이인지 여부를 알 수 없습니다. SQLite 연결을 사용하기 시작했을 때 "쿼리" 메서드를 사용하려고했지만 몇 가지 문제가있었습니다 (일부 probs는 이와 비슷합니다). rawQuery 메서드를 사용하기 시작했으며 현재 모든 것이 작동합니다.

가능 나는 다만 실패하고있다 그러나 이것은 나의 문제를위한 해결책이었다.

관련 문제