Android 如何连接到.sql文件中定义的现有数据库?
如果我们已经有一个Android 如何连接到.sql文件中定义的现有数据库?,android,sqlite,Android,Sqlite,如果我们已经有一个.sql格式的数据库文件,我们如何在android应用程序中加载它并使用它的数据 我也有同样的问题,我照jaydeep说的做了。但是我不能继续……请帮帮我。我在此添加了1个方法来检索1条记录,如下所示: public Cursor getTitle(String g,String k) throws SQLException { Cursor c = myDataBase.rawQuery( "select * from titles where food
.sql
格式的数据库文件,我们如何在android应用程序中加载它并使用它的数据
我也有同样的问题,我照jaydeep说的做了。但是我不能继续……请帮帮我。我在此添加了1个方法来检索1条记录,如下所示:
public Cursor getTitle(String g,String k) throws SQLException {
Cursor c = myDataBase.rawQuery(
"select * from titles where food LIKE '%"+g+"%' and area LIKE '%"+k+"%' ",
null);
if (c != null) {
c.moveToFirst();
}
return c;
}
其中titles是数据库中表的id名称n food area n rest是字段。在主文件中,我做了如下工作:
{
Datahelper myDbHelper = new Datahelper(this);
final String tem="Chinese";
final String tem2="Bur Dubai";
final ListView list = (ListView)findViewById(R.id.list);
try {
myDbHelper.createDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
myDbHelper.openDataBase();
}catch(SQLException sqle){
throw sqle;
}
Cursor c = myDbHelper.getTitle(tem,tem2);
if (c.moveToFirst()) DisplayTitle(c);
else Toast.makeText(this, "No title found",
Toast.LENGTH_LONG).show();
}
public void DisplayTitle(Cursor c) {
final TextView ter=(TextView)findViewById(R.id.ter);
c.moveToPosition(0);
while (c.isAfterLast() == false) {
ter.append(c.getString(3)+"\n");
c.moveToNext();
}
c.close();
}
请帮帮我
列表视图代码:
if (c.moveToFirst())
{
final String [] restarr=c.getColumnNames();
String[] fields = new String[] {db.KEY_REST};
list.setAdapter(new ArrayAdapter<String>(this, R.layout.main, restarr));
SimpleCursorAdapter rest = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,c,fields, new int[] {android.R.id.text1});
list.setAdapter(rest);
}
if(c.moveToFirst())
{
最后一个字符串[]restarr=c.getColumnNames();
字符串[]字段=新字符串[]{db.KEY_REST};
setAdapter(新的ArrayAdapter(this,R.layout.main,restarr));
SimpleCursorAdapter rest=newsimplecursoradapter(这是android.R.layout.simple_list_item_1,c,fields,newint[]{android.R.id.text1});
list.setAdapter(rest);
}
您需要SQLite
版本的数据库。我敢打赌,您当前要发送到应用程序的数据库,其模式是用纯SQL语法编写的,与SQLite有很大不同
如果我的假设是真的,那么您需要提取模式并将其转换为SQLite。这需要对语法进行一些小的更改,但逻辑保持不变
下面是一个很好的教程,介绍如何在android应用程序中发布外部本地数据库:
注意数据库文件的版本和扩展名。是的,我遵循了你给jus的相同链接,添加了获取标题方法。我在一个问题中提到的主文件中的更改。我一点也不获取wats gng错误尝试像这样打开数据库
SQLiteDatabase db=SQLiteDatabase.openDatabase(getDatabasePath(DBNAME),null,SQLiteDatabase.OPEN_READWRITE | SQLiteDatabase.OPEN_READWRITE)代码>改为使用DBhelper类openDatabase()
methodhey thnx man…它是wrkd..但现在将数据绑定到listview的问题来了这里是我做的d代码片段,如果(c.moveToFirst()){final String[]restarr=c.getColumnNames();String[]fields=new String[]{db.KEY\u REST};list.setAdapter(new ArrayAdapter(this,R.layout.main,restarr));SimpleCursorAdapter rest=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,c,fields,new int[]{android.R.id.text1});list.setAdapter(rest);}这里对于字段数组存在问题,因为我不能使用这个db.col namenew ArrayAdapter(此,R.layout.main,restarr)
为什么要使用主布局?为什么要使用另一个适配器?为listview的项目视图创建一个新的适配器。其余代码对我来说似乎是合理的。这些是我唯一的评论。问题是只创建restarr适配器。因为我需要Parrell数据库列来绑定存储在fields数组中的数据。所以我喜欢String[]fields=newstring[]{myDbHelper.myDataBase.rest};(rest是col name),但它是gvs错误