Android java.sql.SQLException:无法在对象上运行insert stmt

Android java.sql.SQLException:无法在对象上运行insert stmt,android,sqlite,ormlite,Android,Sqlite,Ormlite,我一直在尝试向数据库中插入一条记录,但它在Android中不起作用,尽管我以前做过。这是我第一次在ORMLite中使用多个表 这就是我想做的: 将数据从XML存储到模型中 然后尝试从模型中插入数据 使用的数据库:SQLite 奥姆莱特 活动类 TbDriverInfoBO tbDriverInfoBO = new TbDriverInfoBO(); Document doc = XMLfunctions.XMLfromString(strResult); NodeList nodes = doc

我一直在尝试向数据库中插入一条记录,但它在Android中不起作用,尽管我以前做过。这是我第一次在ORMLite中使用多个表

这就是我想做的: 将数据从XML存储到模型中 然后尝试从模型中插入数据

使用的数据库:SQLite 奥姆莱特

活动类

TbDriverInfoBO tbDriverInfoBO = new TbDriverInfoBO();
Document doc = XMLfunctions.XMLfromString(strResult);
NodeList nodes = doc.getElementsByTagName("root");
Element root = (Element) nodes.item(0);
jabongModel.setLoginId(XMLfunctions.getValue(root, "UserId"));
jabongModel.setPassword(XMLfunctions.getValue(root, "UserPwd"));
jabongModel.setDrsno(XMLfunctions.getValue(root, "DRSNo"));
jabongModel.setBrancode(XMLfunctions.getValue(root, "BranchCode"));
jabongModel.setLoginDate(XMLfunctions.getValue(root, "LoginDate"));
//clsDriverInfo obj = new clsDriverInfo(loginId, pswd, drsno,
/*tbDriverInfoBO.setColUserId(jabongModel.getLoginId());
tbDriverInfoBO.setColPwd(jabongModel.getPassword());
tbDriverInfoBO.setColDrs(jabongModel.getDrsno());
tbDriverInfoBO.setColBranch(jabongModel.getBrancode());*/

tbDriverInfoBO.fillBo(jabongModel);

dbHelperTbDriverInfo.addData(tbDriverInfoBO);
中银级:

public class TbDriverInfoBO {

    @DatabaseField(generatedId = true)
    int id;
    @DatabaseField
    String colUserId;
        ...

        // getters and setters

    public TbDriverInfoBO(String colUserId, String colPwd, String colDrs, String colBranch)
    {
        this.colBranch = colBranch;
        this.colDrs = colDrs;
        this.colPwd = colPwd;
        this.colUserId = colUserId;
    }

    public TbDriverInfoBO() {
        // TODO Auto-generated constructor stub
    }
    public void fillBo(JabongModel jabongModel)
    {
       this.colBranch = jabongModel.getBrancode();
       this.colDrs = jabongModel.getDrsno();
       this.colPwd = jabongModel.getPassword();
       this.colUserId = jabongModel.getLoginId();
       //this.id = jabongModel.getId();

    }
}



DBHelperClass
public int addData(TbDriverInfoBO tbDriverInfoBO) {
    int i=0;
    RuntimeExceptionDao<TbDriverInfoBO, String> dao = getTbDriverInfoDaO();
    try{
     i = dao.create(tbDriverInfoBO);
    }
    catch (Exception e) {
        e.getStackTrace();// TODO: handle exception
    }
    return i;
}
在我看来,您没有为
tbdriverinfobo
创建表

sqlite returned: error code = 1, msg = no such table: tbdriverinfobo

能否在帮助程序中显示
onCreate()
方法?您的应用程序是否有一个现有的数据库,并且您后来添加了这个表?是否需要增加数据库版本号?

由于创建了数据库和表,因此出现此错误 在你想要新桌子之前

tbDriverInfoBO(这是您的新桌子)

ORMLite库正在抛出类似“找不到表tbDriverInfoBO…”之类的异常。。所以你们需要从手机上卸载你们的移动应用程序,然后你们应该把所有的表类写到onCreate方法中,就像下面的代码一样

@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
    try {
        TableUtils.createTable(connectionSource, Table1.class);
        TableUtils.createTable(connectionSource, Table2.class);
        TableUtils.createTable(connectionSource, Table3.class);
        TableUtils.createTable(connectionSource, Table4.class);
        TableUtils.createTable(connectionSource, Table5.class);//you must add all your table class 
        TableUtils.createTable(connectionSource, TableN.class);
    } catch (SQLException e) {
        e.printStackTrace();
    }

}
添加所有表类后,您可以将数据添加到本地表


我希望我的回答能帮助别人。。。快乐编码

我添加了堆栈跟踪。但我正在为每个表创建DBHelper类。同样在触发此查询之前,我正在查询视图表,但由于视图表中不存在任何记录,所以我无法从中获取任何记录。稍后我查询这个TBDriverInfo表。有人请帮忙。。。这里的紧急人员正在免费帮助你,同时他们也有事情要做,所以请避免“这很紧急”的评论。我看你的stacktrace没有任何异常。发布SQLException.in onCreate的stacktrace,我必须调用createIfTableDoesNotExist,而不是createTable。我知道,它对我很管用。尽管我必须在所有dbhelper类中插入数据之前显式调用它。我以前使用过它,但在插入数据之前从未显式调用过它。我想知道为什么会有这样的行为。
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
    try {
        TableUtils.createTable(connectionSource, Table1.class);
        TableUtils.createTable(connectionSource, Table2.class);
        TableUtils.createTable(connectionSource, Table3.class);
        TableUtils.createTable(connectionSource, Table4.class);
        TableUtils.createTable(connectionSource, Table5.class);//you must add all your table class 
        TableUtils.createTable(connectionSource, TableN.class);
    } catch (SQLException e) {
        e.printStackTrace();
    }

}