我有一個問題沒有被讀取 我已經加入名爲MYDB資產的數據庫文件的數據庫文件,但是當我運行我的代碼,它說,它沒有被定位。它調用這個土司Toast.makeText(這一點, 「不接觸發現」,Toast.LENGTH_LONG).show();這是因爲沒有記錄被返回而被調用。另外我知道它找到的文件是沒有FileNotFoundException異常。這是一個Android應用程序開發書的例子。Android的數據庫沒有返回的記錄,但sqlitebrowser包含數據
public class DatabaseActivity extends Activity {
/** Called when the activity is first created. */
TextView quest, response1, response2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView quest = (TextView) findViewById(R.id.quest);
try {
String destPath = "/data/data/" + getPackageName() + "/databases/MyDB";
File f = new File(destPath);
if (!f.exists()) {
CopyDB(getBaseContext().getAssets().open("mydb"),
new FileOutputStream(destPath));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
DBAdapter db = new DBAdapter(this);
//---get a contact---
db.open();
Cursor c = db.getContact(2);
if (c.moveToFirst())
DisplayContact(c);
else
Toast.makeText(this, "No contact found", Toast.LENGTH_LONG).show();
db.close();
}
public void CopyDB(InputStream inputStream, OutputStream outputStream)
throws IOException {
//---copy 1K bytes at a time---
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
}
public void DisplayContact(Cursor c)
{
quest.setText(String.valueOf(c.getString(1)));
//quest.setText(String.valueOf("this is a text string"));
}
}
有沒有更好的上傳數據的方法。
謝謝,我會試試看。我不認爲它的DBAdapter,因爲我已經用於其他例子,它運作良好。我剛將數據庫文件添加到資產並將其讀取時遇到了問題。它上傳正常。數據似乎沒有被讀入光標,所以它可以輸出到一個XML佈局文件。 – al23dev
但是,被'DBAdapter'打開確切相同的位置'字符串destPath = 「/數據/數據/」 + getPackageName()+ 「/數據庫/ MYDB」;'? (在文件名中的相同大小寫等)。也許,你正在將資源數據庫複製到不同的文件? – stuckless
這是我固定它的表被稱爲basic_table這沒有似乎工作表的名稱。所以我刪除了不喜歡的內容。我也接受了關於不使用printStackTrace()的建議。另外感謝您提供!if.exists()語句的建議 – al23dev