我正在尝试将我的Java程序中的日期字符串插入到我的一个具有日期类型的MySQL数据库字段中。
package events;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Date;
/**
*
* @author mewq
*/
public class ConDb {
public static void main(String[] args){
String description = null;
try{
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/tangkilikan", "user=root", "password=tangkilik");
Statement stat = (Statement) conn.createStatement();
String eventName = "Imba meeting";
String Address = "Zamora, Cabarroguis, Quirino";
Date date = '2011-09-09';
String description = "meeting";
String insert = "insert into events values ('" + eventName + "', '" + Address + "', ' + date + ', '" + description + "')";
stat.executeUpdate(insert);
} catch(Exception e) {
}
}
}
答案 0 :(得分:4)
Date date = '2011-09-09';
不会编译。将日期插入具有日期类型的数据库表的正确方法是使用PreparedStatement。
String dateString = "2011-09-09";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = formatter.parse(dateString);
String insert = "insert into events values (?, ? , ? , ?)";
PreparedStatement ps = conn.prepareStatment(insert);
ps.setString(1, eventName);
ps.setString(2, Address);
ps.setDate(3, myDate);
ps.setString(4, description);
ps.executeUpdate();
答案 1 :(得分:2)
尝试使用SimpleDateFormat
DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
Date date = (Date)formatter.parse("05/15/11");
并使用生成的日期作为插入。
答案 2 :(得分:1)
作为惯例,您的变量/字段/成员名称不应以大写字母开头,因此Address
实际上应为address
。
至于您的问题,在您发布的代码中创建insert
字符串存在问题;在尝试连接你的date
字段之前,你没有用双引号(“)结束字符串,所以你不会最终得到你期望的字符串。请尝试以下代码:
String insert = "insert into events values ('" + eventName + "', '" + Address + "', '" + date + "', '" + description + "')";
答案 3 :(得分:0)
mysql日期时间格式为'2013-01-01 01:00:00'或YYYY-MM-DD HH:MM:SS确保你有引号或刻度..
- >尝试将该日期对象转换为字符串。
在没有更多信息的情况下我能做到最好。