2012-09-14 2 views
6

내 안드로이드 자바 프로젝트에서 여러 SQLite 데이터베이스를 사용하고 있습니다. 첫 번째 코드 (로그인 용)는 다음 코드를 사용하여 정상적으로 작동하며 연결을 닫습니다. 그러나 다음 페이지에서 다른 데이터베이스를 사용하는 함수를 호출하고 있지만 여전히 새 데이터베이스가 아닌 첫 번째 데이터베이스를 참조하는 것으로 보입니다. 이 오류가 나타납니다.Android : SQLite 잘못된 데이터베이스 사용

09-14 13:18:01.990: I/SqliteDatabaseCpp(10035): sqlite returned: error code = 1, msg = no such table: 
NextID, db=/mnt/extSdCard/DirectEnquiries/AuditingData/Static/Users 

다음 중 사용자가 올바르지 않습니다. 다음 페이지는이를 사용

if(String.valueOf(loginCount).equals("2")) { 

     File dbfile = new File(Global.StaticDB + "/Users"); 
     SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); 

     Cursor c = db.rawQuery("SELECT UserID from Users where UserID like '" + txtUsername.getText().toString().trim() + "' AND Password like '" + txtPassword.getText().toString().trim() + "'", null); 
     c.moveToFirst(); 

     if(c.getCount() > 0) { 
      Global.Username = c.getString(c.getColumnIndex("UserID")); 
      Global.currentDB = spnLocation.getSelectedItem().toString(); 
      Global.currentDBfull = Global.sctArea + Global.currentDB; 

      db.close(); 
      Context context = getApplicationContext(); 
      CharSequence text = "Logged In"; 
      int duration = Toast.LENGTH_SHORT; 
      Toast toast = Toast.makeText(context, text, duration); 
      toast.show(); 
      Intent ShowMainPage = new Intent(view.getContext(), MainPage.class); 
      startActivityForResult(ShowMainPage, 0); 


     } 

: 여기

는 사용자 테이블을 사용하여 로그인 페이지에 대한 코드입니다

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_page); 
    TextView txt = (TextView) findViewById(R.id.textView1); 
    txt.setText(Global.Username); 
    TextView dbtxt = (TextView) findViewById(R.id.txtDB); 
    dbtxt.setText(Functions.getNextID("StationObjects")); 

} 

을 그리고 기능은 다음과 같습니다

public static int getNextID(String tablename) { 
    Log.e("Current DB is: ", Global.currentDBfull); 
    File dbfile = new File(Global.currentDBfull); 
    SQLiteDatabase dbF = SQLiteDatabase.openOrCreateDatabase(dbfile, null); 

    int rtnID=(int)DatabaseUtils.longForQuery(dbF,"Select NxtNumber from NextID where NxtTable like '" + tablename + "'",null);  
    rtnID += 1; 
    //db.rawQuery("update NextID set NxtNumber = '" + rtnID + "' where NxtTable like 'StationObjects'", null); 
    dbF.close(); 
    return rtnID; 
} 

첫 번째 데이터베이스가 아닌 두 번째 데이터베이스를 어떻게 사용합니까? 톰

+1

는 당신이 로그인 데이터베이스에 커서를 닫습니까? – jnthnjns

+0

그냥 첫 번째 하위에서 커서를 닫으려고했지만 여전히 같은 오류가 발생했습니다 – TMB87

+3

많은 logcat을 게시하지 않았습니다. "Current DB is :"메시지, 예외 사항 등을 확인할 수 있습니까? 또한 Global.sctArea는 무엇이며 (c.getCount()> 0)가 false이면 어떻게됩니까? 당신은 많은 정보를 숨기고 있습니다. (단순함을 위해 알았지 만 많은 도움이되지는 않습니다 ...) –

답변

2
당신은 열고 데이터베이스를 닫습니다 다음 형식을 사용하여 시도 할 수

: 당신이 2 DB_PATHs을 정의하고 어디와 관계있는 그것들을 참조 할 필요가 2 데이터베이스의 경우를 들어

private static String DB_PATH = "/data/data/PACKAGE_NAME/databases/DATABASE_NAME.db"; 
private static SQLiteDatabase db; 
db = SQLiteDatabase.openDatabase(DB_PATH, null, SQLiteDatabase.OPEN_READONLY); 
// RUN YOUR QUERIES ETC 
db.close() 

. 이 도움이

희망, L & L 파트너

관련 문제