datetime对应的jdbc mysql_日期Java到MySql DateTime

every body. I am getting this error:

You have an error in your SQL syntax; check the manual that

corresponds to your MySQL server version for the right

syntax to use near '14:37:41)' at line 1

for this piece of code

public String addName() {

// TODO Auto-generated method stub

try {

java.util.Date dt = new java.util.Date();

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(

"yyyy-MM-dd HH:mm:ss");

String currentTime = sdf.format(dt);

String name = "RandomName";

Connection connect = DriverManager.getConnection(

"jdbc:mysql://localhost", "ericman", "ericman");

Statement stat = (Statement) connect.createStatement();

String insert = "INSERT INTO `bookcatalog`.`puch` (`name`, `time`) VALUES ('"

+ name + "', " + currentTime + ")";

stat.executeUpdate(insert);

} catch (Exception e) {

System.out.println(e);

}

return "Name Updated";

}

Any suggestion of why this happening, I suck on structured language just so you know :)

解决方案

Use PreparedStatement.

String insert = "INSERT INTO `bookcatalog`.`puch` (`name`, `time`) VALUES (?,?)";

PreparedStatement ps=connect.prepareStatement(insert);

ps.setString(1,name);

ps.setTimeStamp(2,TimeStamp.valueOf(currentTime));

ps.executeUpdate();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题的意思是如何在Java中处理MySQLdatetime类型。在Java中,我们可以使用java.sql.Timestamp类来表示MySQL中的datetime类型。我们可以使用PreparedStatement来设置参数,并使用ResultSet来检索结果。使用JDBC连接MySQL时,我们需要使用驱动程序来连接数据库,并使用Connection对象获取PreparedStatement和ResultSet对象。同时,我们还可以使用Java日期和时间API(如java.time.LocalDateTime)来对日期和时间进行操作。 ### 回答2: MySQL中的datetime类型是表示日期和时间的数据类型,其中包含年、月、日、时、分、秒等信息。如果在Java中要使用datetime类型,可以使用java.util.Date类或java.sql.Timestamp类。 java.util.Date类是Java中最基本的日期时间类之一,可以用来处理时间戳或日期等各种数据类型。在用Java操作MySQL的时候,需要注意Java的Date类和MySQLdatetime类型之间的转换。在Java中,可以通过SimpleDateFormat类来将字符串转换成Date对象,然后再将Date对象保存到MySQL数据库中的datetime类型字段中。例如: ``` SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = "2021-08-31 09:00:00"; Date date = formatter.parse(dateString); ``` java.sql.Timestamp类可以用来保存日期和时间,其精度比Java的Date类高,可以保存毫秒级别的时间戳信息。在Java中操作MySQL的时候,也可以使用java.sql.Timestamp类来表示datetime类型。例如: ``` java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf("2021-08-31 09:00:00"); ``` 不管是使用java.util.Date类还是java.sql.Timestamp类,都需要注意时区的设置。在Java中使用日期时间相关的类时,一般建议使用UTC时间进行存储和计算,而在展示给用户时,再将UTC时间转换为本地时间。正确设置时区可以避免一些常见的时间问题,例如夏令时的问题等。 除了以上提到的两种日期时间类,还有很多其他的日期时间类和库可以使用,例如Joda-Time、Date4j等。在使用这些库时,需要根据具体需求选择和配置。总之,在Java中和MySQLdatetime类型进行操作时,需要注意日期时间的精度、时区、格式等问题,才能保证代码的正确性和稳定性。 ### 回答3: MySQL 中的 datetime 类型,其值范围为‘1000-01-01 00:00:00’到‘9999-12-31 23:59:59’,精确到秒。而在 Java 中,可以使用 java.util.Date 类型来表示这个范围,但是存在一些限制,比如只能表示到毫秒级别,无法表示 MySQL datetime 的精度范围,因此通常建议使用 java.sql.Timestamp 类型来表示 MySQL datetime 类型。 java.sql.Timestamp 是继承 java.util.Date 的子类,除了拥有 Date 的所有功能,还可以精确到纳秒级别,可以满足MySQL datetime 精度范围的要求。在使用时,可以采用以下方式将 MySQL datetime 类型转换成 java.sql.Timestamp 类型: ```Java import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; public class DateUtils { /** * 日期时间格式化模板 */ public static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; /** * 将 MySQL datetime 格式的字符串转换为 java.sql.Timestamp 类型 * @param dateTimeStr MySQL datetime 格式的字符串 * @return java.sql.Timestamp 类型的时间 */ public static Timestamp dateTimeToTimestamp(String dateTimeStr) { DateFormat dateFormat = new SimpleDateFormat(DATETIME_PATTERN); try { java.util.Date date = dateFormat.parse(dateTimeStr); return new Timestamp(date.getTime()); } catch (Exception e) { e.printStackTrace(); } return null; } } ``` 使用时,可以调用该方法将 MySQL datetime 格式的字符串转换为 java.sql.Timestamp 类型: ```Java String dateTimeStr = "2022-08-02 17:45:30"; Timestamp timestamp = DateUtils.dateTimeToTimestamp(dateTimeStr); System.out.println(timestamp); ``` 通过以上方式可以将 MySQL datetime 类型转换为对应Java 类型,并且获取到原始MySQL datetime 对应的精确时间值。根据实际应用场景需求,可以灵活使用不同的时间类型进行操作和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值