2014-12-02 2 views
1

에서 sqlite 데이터베이스를 열 수 없습니다 .sqllite 데이터베이스 파일이 하나 있는데이 데이터베이스를 열어 일부 값을 삽입하려고합니다. 응용 프로그램을 실행할 때 로그 cat 오류가 있습니다. 데이터베이스를 열 수 없습니다 this a는 내 코드android는 자산 폴더

public class IrocDBController extends SQLiteOpenHelper { 

String DB_PATH = null; 
private static String DB_NAME = "CredoDatabase.sqlite"; 
private static String usm_Users = "Usm_Users"; 

private SQLiteDatabase myDataBase; 

private final Context myContext; 
public IrocDBController(Context context) { 

    super(context, DB_NAME, null, 2); 
    this.myContext = context; 
    DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/"; 
} 
public void InsertToLoginTable(String username, String password, 
     String LoanOfficerId, String BranchId) { 
    ContentValues newValues = new ContentValues(); 
    newValues.put("UserName", username); 
    newValues.put("Password", password); 
    newValues.put("LoanOfficerId", LoanOfficerId); 
    newValues.put("BranchId", BranchId); 

    myDataBase.insert(usm_Users, null, newValues); 
} 


public boolean DublicateValues(int LoanOfficerId) { 
    myDataBase = this.getWritableDatabase(); 
    Cursor cursor = myDataBase.rawQuery("select * from " + usm_Users + " where " 
      + "LoanOfficerId" + " == " + LoanOfficerId, null); 
    boolean exists = (cursor.getCount() > 0); 
    Log.e("aaaaaaaaaaaaaaaaaaaa", String.valueOf(cursor.getCount())); 
    cursor.close(); 
    return exists; 
} 

public void createDataBase() throws IOException { 
    boolean dbExist = checkDataBase(); 
    if (dbExist) { 
     // do nothing - database already exist 
    } else { 
     this.getReadableDatabase(); 
     try { 
      copyDataBase(); 
     } catch (IOException e) { 
      throw new Error("Error copying database"); 

     } 
    } 

} 

public String getNameFildeEntry(String username) { 
    Cursor cursor = myDataBase.query(usm_Users, null, " UserName=?", 
      new String[] { username }, null, null, null); 
    if (cursor.getCount() < 1) // UserName Not Exist 
    { 
     cursor.close(); 
     return "NOT EXIST"; 
    } 
    cursor.moveToFirst(); 
    String getUserName = cursor 
      .getString(cursor.getColumnIndex("UserName")); 

    cursor.close(); 
    return getUserName; 
} 

public String getPasswordFildeEntry(String Password) { 
    Cursor cursor = myDataBase.query(usm_Users, null, " Password=?", 
      new String[] { Password }, null, null, null); 
    if (cursor.getCount() < 1) // UserName Not Exist 
    { 
     cursor.close(); 
     return "NOT EXIST"; 
    } 
    cursor.moveToFirst(); 
    String getUserPassword = cursor.getString(cursor 
      .getColumnIndex("Password")); 

    cursor.close(); 
    return getUserPassword; 
} 


private boolean checkDataBase() { 
    SQLiteDatabase checkDB = null; 
    try { 
     String myPath = DB_PATH + DB_NAME; 
     checkDB = SQLiteDatabase.openDatabase(myPath, null, 
       SQLiteDatabase.OPEN_READWRITE); 
    } catch (SQLiteException e) { 
    } 
    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 path = DB_PATH + DB_NAME; 
    myDataBase = SQLiteDatabase.openDatabase(path, null, 
      SQLiteDatabase.OPEN_READWRITE); 
} 

@Override 
public synchronized void close() { 
    if (myDataBase != null) 
     myDataBase.close(); 
    super.close(); 
} 



@Override 
public void onCreate(SQLiteDatabase db) { 

} 

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

} 

}

내가 SQLite는 데이터베이스를 생성 nativec TU를 사용하여 내 데이터베이스에서 나는 일부 테이블 등 그리고 난 아무 생각이 난 자산 폴더 에 삽입이 데이터베이스 내가 뭘 만들어집니다 잘못된. 누구든지 해결책을 알고 있다면 이가 내 로그 고양이 오류 코드 enter image description here

답변

0

는 SQL 파일이 자산 폴더에 있기 때문에이 될 수있다 저를 도와주세요. 내 자산 폴더에있는 exe를 사용하여 비슷한 문제가 발생했습니다. 나는 그것을 사용하고 싶을 때 그것을 전화 저장 장치에 복사해야했다. 그리고 나는 그것을 더 이상 사용하지 않을 것임을 알 때 그것을 삭제했다. 전화상의 응용 프로그램이 .apk 파일 (zip 파일과 유사 함)이며 adroid 자산 도우미를 사용하지 않으면 그 파일에 액세스 할 수 없다는 사실이 원인 일 수 있습니다.

관련 문제