我有一个问题没有被读取 我已经加入名为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