在greendao
中生成和建立一对一关系的代码下方private static void addPersonInfo(Schema schema) {
Entity person=schema.addEntity("Person");
person.addIdProperty().primaryKey().autoincrement();
person.addStringProperty("personName");
Entity order=schema.addEntity("Order");
order.addLongProperty("orderID").primaryKey().autoincrement();
order.addStringProperty("orderName");
Property orderProperty=person.addLongProperty("orderID").getProperty();
person.addToOne(order,orderProperty);
}
上面的代码生成相应的Person.java,PersonDao.java,Order.java,OrderDao.java,DaoSession.java和DaoMaster.java文件。
现在在我的MainActivity的onCreate()方法中,我只是想在表中插入一条记录,但我不知道我该怎么做。 我试过这样:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"RelationDemo.db", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
Person person=new Person();
Order order=new Order();
OrderDao orderDao=daoSession.getOrderDao();
order.setOrderID(Long.parseLong("111"));
order.setOrderName("person1 order");
orderDao.insert(order);
PersonDao personDao=daoSession.getPersonDao();
person.setPersonName("person1");
person.setOrderID(Long.parseLong("111"));
person.setOrder(order);
personDao.insert(person);
}
但这会产生异常:引起:android.database.sqlite.SQLiteException:near“ORDER”:语法错误(代码1):,同时编译:INSERT INTO ORDER('ORDER_ID', 'ORDER_NAME')VALUES(?,?)
请帮帮我。感谢
答案 0 :(得分:0)
您似乎正在以正确的方式行事,至少在谈论greendao代码时。
但它似乎是一个SQLite问题。我认为它可能是表名,因为" ORDER"它是SQLite reserved word用于" ORDER BY" clausule。您可以引用该关键字,因为它在链接中被告知,但我认为应该很容易为表格使用不同的名称。