这是还书操作的代码:
public static void returnbook(String bookName) {
try {
Connection con = ConnectDatabase.connectDB();
String sql1 = "update book311 set position='在馆'";
String sql2 = String.format("update usbk set returndate = %s where bookname='"+bookName+"'","getdate()");
Statement stmt=con.createStatement();
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);
}
catch (SQLException e) {
e.printStackTrace();
}
}
这是将数据插入表格的代码:
public static void adaccountcheck(JTable table,String Account){
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
Connection con = ConnectDatabase.connectDB();
PreparedStatement preSql;
ResultSet rs;
boolean flag = false;
Account = "%" + Account + "%";
String sqlStr = "select user311.account,user311.name,book311.bookno,usbk.bookname,borrowdate,returndate from user311,book311,usbk where usbk.account like ?";
try {
preSql = con.prepareStatement(sqlStr);
preSql.setString(1, Account);
rs = preSql.executeQuery();
while (rs.next()) {
flag = true;
String useraccount = rs.getString(1);
String username = rs.getString(2);
String bookno = rs.getString(3);
String bookname = rs.getString(4);
String borrowdate = rs.getString(5);
String returndate = rs.getString(6);
tableModel.addRow(new Vector<>(Arrays.asList(useraccount, username, bookno, bookname,borrowdate,returndate)));
}
if (!flag) {
JOptionPane.showMessageDialog(null, "该用户无借书记录!", null, JOptionPane.WARNING_MESSAGE);
}
con.close();
} catch (SQLException e) {
}
}
在sql数据库里面的结果(进行还书操作后)还书日期为什么不能显示时间,只有日期?(代码和借书操作是一样的):
而且在Java操作得出的结果是这样的:
感谢解答!!
1.先看数据库表结构,是否你的数据类型是date而不是datetime,也就是说数据库里本身只有日期,没有时间
2.这是你使用了数据库的客户端连接数据库,并且使用编辑模式而非查询模式打开表造成的。第二行是为了你在客户端界面手动添加一行数据预留的,它并不在数据库里。你看它的行标题标了个*号,表示这一行其实在内存里,并不是实际数据库里的数据。
你看看你的数据库语句和界面上是不是对应上了哈。单步运行看看
还书时间只显示日期,是数据库字段不正确,应该设置为Datetime或者Timestamp。
第一个问题:Debug看下查询时从数据库取到的还书时间是多少,是不是和数据库一致,如果一致那就是查询之后对时间做了处理,这种问题还是要一步一步的去Debug看是哪里出的问题。
第二个问题:数据库可视化工具为了方便用户在可视化中手动插入数据而预留出的一行,实际在表中是不存在那一行空数据的。