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

来源:互联网 发布:java web开发教程 pdf 编辑:程序博客网 时间:2024/06/03 13:08

错误!
错误信息
调用查询代码代码

    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的文件夹下面了!!!

阅读全文
0 0
原创粉丝点击