我刚刚使用Java(Netbeans)创建了一个简单的学生注册表。它有几个栏目可以进入学生的行列。 regNo,name,address等数据和一个Insert按钮,它将数据插入到MS Access中创建的表中。它工作正常。但我需要存储用户填写该表单的时间。这意味着当用户填写时对于每个条目(每个元组),应该捕获系统时间并将其存储在表格中。所以我想知道如何获取系统时间并插入MS Access数据库。我发现了以下代码。但我不知道如何将代码捕获的时间传递给数据库。我已经创建了字段用于在数据库中输入时间。
Calendar cal = Calendar.getInstance();
java.util.Date currentTime = cal.getTime();
这是我编写的用于将时间传递给表格的代码.....
ps = con.prepareStatement("insert into RegInfo(RegNo,StudName,Address,"
+ "Telephone,Stream,RegDate,Time) values(?,?,?,?,?,?,?)");
ps.setLong(6,currentTime.getTime());
我使用了你的代码Razvan。它工作得非常好,但它没有将时间插入表中......(" System.out.println"正常工作)......
final String t1 = "hh:mm:ss";
final DateFormat df = new SimpleDateFormat(t1);
final String formattedTime = df.format(new java.util.Date());
ps.setString(7, formattedTime);
System.out.println("formattedTime "+formattedTime);
答案 0 :(得分:1)
您可以在INSERT查询中使用Now()
函数:
try (Connection conn = DriverManager.getConnection(connStr)) {
String sql;
sql = "INSERT INTO RegInfo (RegNo, StudName, Address, Telephone, Stream, RegDateTime) " +
"VALUES (?, ?, ?, ?, ?, Now())";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, 3);
ps.setString(2, "Gord");
ps.setString(3, "123 Main St");
ps.setString(4, "416-555-1212");
ps.setString(5, "Standard");
ps.executeUpdate();
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
这适用于JDBC-ODBC(已废弃,已从Java 8中删除)和UCanAccess(更多信息here)。
请注意,Access中的日期/时间列始终同时包含日期和时间组件,因此您无需为RegDate
和Time
维护单独的列。
答案 1 :(得分:0)
通用表格可以是:
final String DB_DATE_FORMAT = "MM/dd/YYYY"; //not sure about this, modify to fit your Access date format
final SimpleDateFormat formatter = new SimpleDateFormat(DB_DATE_FORMAT);
final String formattedDate = formatter.format(new Date());
答案 2 :(得分:0)
你的时间不是insert语句中的第一列,它是6号,所以只需将ps参数更改为 ps.setLong(6,currentTime.getTime());