您的位置:首页 > 数据库

SQL无法找到对应的表名:ndroid.database.sqlite.SQLiteException: no such table: dcdy (code 1): , while compilin

2017-06-20 15:10 686 查看
错误!



调用查询代码代码

public SeleteSpinner() {
db = DApplication.getApp().getDB().getInstance();
}

public int jzlx(String builderType) {
// 建筑类型 1.砖混2.钢混3.砖木4.其他
Cursor c = db.rawQuery("select * from jzlx where name=?",
new String[] { builderType });
if (c.moveToFirst())
return c.getInt(c.getColumnIndex("type"));
else
return 0;

}


这里吧DataBaseHelper作为全局app的唯一对象,实例唯一

但是跑起来就是找不到表名,我还以为我字段有写错了,可是字段写错了,不是找不到表,表都写错了,还玩个毛,呵呵,

发现问题:

db = DApplication.getApp().getDB().getWritableDatabase();

这一句话也能够获取一个db对象,但是这不是我要的这个,那么来看db类了

public class DataBaseHelper extends SQLiteOpenHelper {
private static String sqliteimg = FileHelper.baidupsurl() + File.separator;
private static File land_info = null;
private static String sqlName = "";
private static SQLiteDatabase sql;
private SQLiteDatabase db;

private static final int version = 1; // 数据库版本

public SQLiteDatabase getInstance() {
if (sql == null)
sql = SQLiteDatabase.openOrCreateDatabase(land_info, null);
return sql;
}

public DataBaseHelper(Context context) {
super(context, "xx", null, version);
land_info = new File(sqliteimg + "equity.db");// 创建文件
if (!land_info.exists()) {
try {
land_info.createNewFile();
} catch (IOException e) {
}
}
this.db = getInstance();
this.getWritableDatabase();
this.getReadableDatabase();

}
}


我是通过指定文件路径去使用db对象的,不是在app的文件夹下创建的,

So问题就在这了,所以在代码中去创建了实例唯一的db对象以免和app自带的db对象搞混,因为两个对应的表示不一样的,看到了吗??

app对应的是名字为“xx”的表

而项目需要的是“equity”这张表,

好了到这里理解了两个对象的区别就好了,一般小型项目是不需要这样做的

这个项目需要导出数据库那么久能写写在app的文件夹下面了!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐