android数据库不返回任何记录,但sqlitebrowser包含数据
我有一个数据库文件无法读取的问题 我已经在名为mydb的资产中添加了数据库文件,但当我运行代码时,它会说找不到该文件。它称此为toast.makeText(此“未找到联系人”,toast.LENGTH_LONG.show();正在调用此函数,因为没有返回任何记录。我还知道它正在查找文件,因为没有FileNotFoundException异常。这是一本关于Android应用程序开发的书android数据库不返回任何记录,但sqlitebrowser包含数据,android,sqlite,android-assets,Android,Sqlite,Android Assets,我有一个数据库文件无法读取的问题 我已经在名为mydb的资产中添加了数据库文件,但当我运行代码时,它会说找不到该文件。它称此为toast.makeText(此“未找到联系人”,toast.LENGTH_LONG.show();正在调用此函数,因为没有返回任何记录。我还知道它正在查找文件,因为没有FileNotFoundException异常。这是一本关于Android应用程序开发的书 public class DatabaseActivity extends Activity { /**
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"));
}
}
有没有更好的上传数据的方法。这里我想到了几件事
!f、 exists()
check,那么一旦数据库存在(可能是空的),它就再也不会复制它了。所以,也许现在,一直复制它,直到你解决了纠结,然后加入!f、 exists()
e.printStackTrace()
的结果好坏参半,可能会改为Log.e(标记“message”,e)
,看看是否开始在LogCat中看到错误另外,我不知道DBAdapter是什么样子,因为它包装了数据库,所以可能存在问题。谢谢,我会尝试一下。我不认为它是DBAdapter,因为我已经在其他示例中使用了它,而且它工作得很好。我刚刚在将db文件添加到资产和读取它时遇到问题。它上传的很好。数据似乎没有读入游标,因此可以输出到xml布局文件。但是,
DBAdapter
打开的位置是否与String destPath=“/data/data/”+getPackageName()+“/databases/MyDB”打开的位置完全相同代码>?(文件名中的大小写也一样,等等)。也许,您正在将资源数据库复制到另一个文件?这是我修复的表的名称。该表名为basic_table,但似乎不起作用。所以我去掉了不死分数。我还接受了您关于不使用printStackTrace()的建议。同时也感谢您的建议!if.exists()语句