我是新来的Java和Postgres。将数据插入数据库Postgres JDBC
我有餐厅,一个小项目,我有一个struk(ENG:账单)表是这样的:
,我必须将信息插入像这样的表的方法:
public int insertBill(int id_karyawan, String tanggal, String waktu, int total) {
String SQL = "INSERT INTO struk(kode, id_karyawan, tanggal, waktu, total) VALUES (?,?,?,?,?)";
int id = 0;
try(Connection conn = connect(); PreparedStatement pstmt = conn.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS)) {
pstmt.setInt(1, 1);
pstmt.setInt(2, id_karyawan);
pstmt.setString(3, tanggal);
pstmt.setString(4, waktu);
pstmt.setInt(5, total);
int affectedRows = pstmt.executeUpdate();
if(affectedRows > 0) {
try(ResultSet rs = pstmt.getGeneratedKeys()) {
if(rs.next()) {
id = rs.getInt(1);
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return id;
}
后,该方法将调用此:
int billID = app.insertBill(1, "2017-09-24", "08:00:00", 150000);
问题是,我没有任何关于日期和时间的想法,我应该通过什么作为参数?什么样的变量,以便查询工作良好?我搜索了一下它得到了一些使用字符串的线索。现在我在查询方法上使用字符串。有什么建议?
使用实际的'Date' /'Time'对象并让JDBC驱动程序处理它 – MadProgrammer
将String转换为日期(SimpleDateFormat)然后使用setDate –
如果您使用的是Java 8,并且具有最新的JDBC驱动程序,你应该使用像'LocalDate'和'LocalTime'这样的'java.time'对象,并使用'setObject'。 – RealSkeptic