Tôi đang sử dụng nhiều cơ sở dữ liệu SQLite trong dự án java android của mình. Việc đầu tiên (cho một đăng nhập) hoạt động tốt, bằng cách sử dụng mã sau đây và tôi đóng kết nối. Tuy nhiên, trên trang sau tôi đang gọi một hàm sử dụng cơ sở dữ liệu khác nhưng có vẻ như vẫn tham chiếu đến cơ sở dữ liệu đầu tiên và không phải là cơ sở dữ liệu mới. Tôi nhận được lỗi này:Android: SQLite sử dụng cơ sở dữ liệu sai
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
Điều gì là đúng, NextID không có trong Người dùng.
Đây là đoạn mã cho trang đăng nhập trong đó sử dụng những người sử dụng bảng:
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);
}
Trang tiếp theo là sử dụng này:
@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"));
}
Và chức năng là:
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;
}
Làm cách nào để đảm bảo rằng nó sử dụng cơ sở dữ liệu thứ hai và không phải là cơ sở dữ liệu đầu tiên? Tom
Nơi mà bạn đã đóng con trỏ của bạn trên mà cơ sở dữ liệu đăng nhập? – jnthnjns
Chỉ cần thử đóng con trỏ trên phụ đầu tiên nhưng vẫn cùng lỗi – TMB87
Bạn đã không đăng nhiều logcat của mình. Chúng ta có thể kiểm tra thông báo "Current DB is:", ngoại lệ và vân vân không? Ngoài ra Global.sctArea là gì, và điều gì xảy ra nếu (c.getCount()> 0) là sai? Bạn đang giấu nhiều thông tin (tôi biết đó là vì sự đơn giản, nhưng nó không giúp ích nhiều ...) –