当前工具:使用Java与MySQL通信
我尝试多次搜索并最终得到了这个,但它并没有帮助我解决我的问题。 Google Search
我正在编写一些查询语句,试图将有关游戏对象的一些信息保存到数据库中。我想保存对象的ID号(如果它不是0),并使用自动增量功能,否则如果它 0.例如:
// (?,?) = (itemid, amount)
// itemid -> primary key and auto increment.
PreparedStatement ps = db.prepareStatement("INSERT INTO items (?,?)");
ps.setInt(1, item.id() == 0 ? >>>>DEFAULT<<<< : item.id());
ps.setInt(2, item.quantity());
问题当然是我正在做的方式并不是告诉MySQL自动增量的正确方法。有办法吗?此外,我故意插入ID即使它自动增加的原因是我之前编写了一个方法,允许我保存项目的原始状态(从而保留其统计信息)。加载此项目后,我希望能够用新加载的项目替换当前项目及其统计信息。
主要问题:希望能够在满足条件时插入值,否则请尽可能使用主键自动增量。如果我的方法有问题,我会张开耳朵。目前是数据库初学者!
答案 0 :(得分:1)
编辑:
根据MySQL建议,如果在id列中插入0,该列将自动生成序列号。
此处:http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html
请注意,在创建表时,应将列(id)设置为AUTO-INCREMENT。自动增量将从1开始,因此我插入0将插入下一个最大数字。
PreparedStatement ps = db.prepareStatement("INSERT INTO item(id, quantity) VALUES(?,?)");
ps.setInt(1, item.id());
ps.setInt(2, item.quantity());
答案 1 :(得分:0)
试试吧
PreparedStatement ps = db.prepareStatement("INSERT INTO items (?,?)");
ps.setInt(1, (item.id() == 0 ? 0 : item.id()));
ps.setInt(2, item.quantity());