Java SQL将日期插入数据库
我使用Java SQL将日期插入数据库,java,sql,database,insert,Java,Sql,Database,Insert,我使用java.util.Date来获取日期,我得到的日期格式如下 美国东部时间2013年6月29日星期六11:07:25 当我尝试使用将其插入数据库时 String QueryString = "INSERT INTO db (day) Values ('"+d+"');"; st.executeUpdate(QueryString); 我明白了 “从字符转换日期和/或时间时,转换失败 绳子。” 如何将该类型的日期插入数据库 是否应将其声明为字符串?用于与数据库兼容用于与数据库兼容
java.util.Date
来获取日期,我得到的日期格式如下
美国东部时间2013年6月29日星期六11:07:25
当我尝试使用将其插入数据库时
String QueryString = "INSERT INTO db (day) Values ('"+d+"');";
st.executeUpdate(QueryString);
我明白了
“从字符转换日期和/或时间时,转换失败
绳子。”
如何将该类型的日期插入数据库
是否应将其声明为字符串?用于与数据库兼容用于与数据库兼容
如何将该类型的日期插入数据库?我应该将其声明为字符串吗
否-您甚至应该避免当前的字符串转换。您不应该像那样动态构建SQL—这会导致SQL注入攻击、代码难以读取和转换失败
相反,请使用a并使用以下方法设置参数:
请注意,java.sql.Date
是java.util.Date
的一个子类,但它们有些不同。我从来都不清楚哪个时区用于将给定的时间瞬间转换为实际日期,文档也没有什么帮助。在我看来,它被设计打破了,但那是另一回事。您可以使用另一个setDate
重载,它接受用于时区的日历。这仍然是非常不清楚的,但希望你能得到你想要的结果
如何将该类型的日期插入数据库?我应该将其声明为字符串吗
否-您甚至应该避免当前的字符串转换。您不应该像那样动态构建SQL—这会导致SQL注入攻击、代码难以读取和转换失败
相反,请使用a并使用以下方法设置参数:
请注意,java.sql.Date
是java.util.Date
的一个子类,但它们有些不同。我从来都不清楚哪个时区用于将给定的时间瞬间转换为实际日期,文档也没有什么帮助。在我看来,它被设计打破了,但那是另一回事。您可以使用另一个setDate
重载,它接受用于时区的日历。这仍然非常不清楚,但希望你能得到你想要的结果。或者,使用:
不过,根据驱动程序/数据库的不同,表上可能存在写锁
日期格式化应该在输出上进行,而不是在输入上。让数据库决定如何最好地存储日期。或者,使用:
不过,根据驱动程序/数据库的不同,表上可能存在写锁
日期格式化应该在输出上进行,而不是在输入上。让数据库决定如何最好地存储日期。您可以使用它格式化日期对象
Date d = Calendar.getInstance().getTime(); //Your date
String dateString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d);
String QueryString = "INSERT INTO db (day) Values ('"+dateString+"');";
st.executeUpdate(QueryString);
您可以使用设置日期对象的格式
Date d = Calendar.getInstance().getTime(); //Your date
String dateString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d);
String QueryString = "INSERT INTO db (day) Values ('"+dateString+"');";
st.executeUpdate(QueryString);
参数化了值。参数化了值。
Date d = Calendar.getInstance().getTime(); //Your date
String dateString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d);
String QueryString = "INSERT INTO db (day) Values ('"+dateString+"');";
st.executeUpdate(QueryString);