2013-01-18 16 views
0

sqlite 데이터베이스에서 레코드를 선택하고 단순히 내 응용 프로그램에 표시하고 싶었습니다. 하지만 내 프로그램을 실행할 때 디버그 오류가 발생했습니다. - [2013-01-18 14:39:28 - ddms] Can't bind to local 8649 for debugger and table not found error. 여기에 내 코드를 게시하면 누군가가 확인하고 해결책을 알려주십시오.Sqlite 테이블을 찾을 수 없습니다.

DatabaseMain 클래스 :

public class DatabaseMain extends SQLiteOpenHelper{ 


    private static String DB_PATH = "/data/data/com.ocs.employeedetails/databases/"; 

    private static String DB_NAME = "EMPLOYEE_DB.sqlite"; 
    private static int VERSION = 1; 
    private final Context mycontext; 
    private SQLiteDatabase sqliteDb; 

    public DatabaseMain(Context context) { 
     super(context,DB_NAME,null,VERSION); 
     this.mycontext = context; 

    } 


    public void createDataBase() throws IOException{ 

     boolean databaseExist = checkDataBase(); 
     if(databaseExist){ 

     }else{ 

      this.getReadableDatabase(); 
      //this.getWritableDatabase(); 
      try{ 
      copyDataBase(); 
      }catch(IOException e){ 
       throw new Error("Error copying database"); 

      } 
     } 
    } 


    private boolean checkDataBase(){ 
     SQLiteDatabase checkDB = null; 

     try{ 
      String myPath = DB_PATH + DB_NAME; 
      checkDB = SQLiteDatabase.openDatabase(myPath, null, 
     SQLiteDatabase.OPEN_READONLY); 

     }catch(SQLiteException e){ 
      e.printStackTrace(); 
     } 
     if(checkDB != null){ 
      checkDB.close(); 
      } 

     return checkDB != null ? true : false; 

    } 


    private void copyDataBase() throws IOException{ 

     InputStream myInput = mycontext.getAssets().open(DB_NAME); 
     String outFileName = DB_PATH +DB_NAME; 
     OutputStream myOutput = new FileOutputStream(outFileName); 
     byte[] buffer = new byte[1024]; 
     int length; 
     while ((length = myInput.read(buffer))>0){ 
      myOutput.write(buffer, 0, length); 
     } 
     myOutput.flush(); 
     myOutput.close(); 
     myInput.close(); 
    } 

    public void openDataBase() throws SQLException{  
     String myPath = DB_PATH + DB_NAME; 
     sqliteDb = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); 
    } 
    public Cursor queryExec(){ 
     openDataBase(); 
     String qry = "Select * from employee_tab"; 
     Cursor cur = null; 
     cur = sqliteDb.rawQuery(qry,null); 
     close(); 
     return cur; 

    } 
    @Override 
    public synchronized void close() { 

      if(sqliteDb != null) 
       sqliteDb.close(); 

      super.close(); 

    } 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     try { 
      createDataBase(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} 


    } 

내 Activityclass 내가 DatabaseMain 클래스를 사용하고 있습니다 :

@Override 
    public void onClick(View v) { 
     if(v.getId() == R.id.buttonOk){ 
      Toast.makeText(getBaseContext(), "Hi ",Toast.LENGTH_SHORT).show(); 
     try { 
         dm.createDataBase(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     dm.openDataBase(); 
     Cursor cr = dm.queryExec(); 
     if(cr.moveToFirst()) 
     { 

      while(cr.isFirst()) 
      { 
       id[0] = cr.getInt(0); 
       name.setText(cr.getString(1)); 
       ph.setText(cr.getInt(2)); 
       doj.setText(cr.getString(2)); 
      } 
     } 

     } 
+3

여기에 전체 로그 캣를 넣어 –

+0

언급 한 오류는 LogCat에서 가져온 것이 아닙니다. 'adb ​​logcat'을 실행하거나 Eclipse에서 LogCat보기를여십시오. – WarrenFaith

+0

logcat 오류를 게시하십시오. – GrIsHu

답변

0

당신은 디버거의 포트를 변경하려고 할 수 있습니다

Under Window -> Preferences -> Android -> DDMS: 

    Set Base local debugger port to "8601" 
    Check the box that says "Use ADBHOST" and the value should be "127.0.0.1" 
+0

감사합니다. 오류 –

+0

을 해결할 수 있습니까? – JoaoBiriba

관련 문제