这是我程序logcat的错误。
06-24 01:35:04.213:INFO / ActivityManager(587): 开始活动:意图{comp = {one.two / one.two.Arrival}} 06-24 01:35:04.521:ERROR / DBDroid(1048):android.database.sqlite.SQLiteException:没有这样的表:port :,编译时:SELECT KEY_STATUS,KEY_ID,KEY_ARRIVAL,KEY_DESTINATION,KEY_FERRY FROM ferry 06-24 01:35:05.026:INFO / ActivityManager(587):显示的活动one.two / .Arrival:805 ms
似乎声明没有名为port的表。 但我确实有一个名为port的表放在模拟器中,位于data / data / one.two / databases
下这是我的部分DBAdapter代码:
public class DBAdapter extends ListActivity {
public static String KEY_STATUS = "status";
public static String KEY_ID = "id";
public static String KEY_ARRIVAL = "arrival";
public static String KEY_DESTINATION = "destination";
public static String KEY_FERRY = "ferry";
private static final String DATABASE_NAME = "ferry";
private static final String DATABASE_TABLE = "port";
private static final int DATABASE_VERSION = 1;
private static Context context;
private static DatabaseHelper DBHelper;
private static SQLiteDatabase db;
顺便说一下,这里的任何人都知道这个方法的作用:
public DBAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, "ferry", null, 1);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
}
@Override
public void onCreate(SQLiteDatabase db)
{
}
}//end DatabaseHelper
// ---opens the database---
public DBAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
// ---closes the database---
public void close()
{
DBHelper.close();
}
谢谢。
答案 0 :(得分:1)
您应该将表创建代码放在DatabaseHelper.onCreate()
方法 - SQL CREATE语句中,用于您将在其他查询中使用的所有表。
修改强>
除非您在应用程序包中提供已在Android外部创建的“.db”文件(例如,使用SQLite Database Browser
工具 - http://sqlitebrowser.sourceforge.net)(例如已填充数据)。然后你不必在这里放任何代码(此外如果你把代码试图创建存在的表,你会得到一个SQL异常)。
答案 1 :(得分:0)
你绝对确定桌子存在吗?
尝试从shell打开数据库调用以下命令(我猜DATABASE_NAME
是数据库文件的名称):
adb shell
sqlite3 /data/data/one.two/databases/ferry
SQLite控制台应该打开。然后列出表格:
.tables
使用.quit
退出SQLite。
修改强>
如果你的数据库文件是ferry.db,那么DATABASE_NAME
也应该是“ferry.db”