在课程表中,我的主键是course_code,它的模式类似于“ SLIOP-P-001”(SLIOP-SUBJECT INITIAL-NUMBER)
单击生成按钮时,我需要生成SLIOP-P-002。
有人可以指导我编写此代码的方法吗?
我试过下面的代码。但这是行不通的。
private void generate_course_codeActionPerformed(java.awt.event.ActionEvent evt) {
String c_code=course_catergory.getSelectedItem().toString();
if(c_code=="Printing"){
try {
pst.executeUpdate("INSERT INTO course (course_code)VALUE(?)",Statement.RETURN_GENERATED_KEYS);
rs = pst.getGeneratedKeys();
if (rs.next()) {
cour_code.setText(rs.getString(1));
}
}
catch(Exception e){
//JOptionPane.showMessageDialog(null,"Error occured","Error",JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null,e);
}
}
}
我不知道创建这种模式的自动方法。但是,生成这种密钥的一种乏味的方法如下:
建立表格
CREATE TABLE course (
id int NOT NULL AUTO_INCREMENT,
course_code CHAR(7) NOT NULL,
PRIMARY KEY (id)
);
插入一个课程代码的条目:
PreparedStatement pst = connection.prepareStatement("INSERT INTO course (course_code) VALUES (?)");
pst.setString(1, "SLIOP-P");
pst.executeUpdate();
// close pst
这将插入course_code并为id
列生成一个新的整数值,您可以将其用作后缀(请参见下文)。
对所需的课程代码执行选择查询:
PreparedStatement pst2 = connection.prepareStatement("select * from course where course_code = ?");
pst2.setString(1, "SLIOP-P"); // this is an example; pass anything
ResultSet rs = pst2.executeQuery();
String courseCode = null;
if (rs.next()) {
courseCode = rs.getString("course_code") + "-" + String.format("%03d", rs.getInt("id"));
}
从您的方法返回此课程代码:
return courseCode;
但是,如果您问我,更好的方法是将所有可能的课程代码存储在地图中。除非没有要求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句