Java—以正确的方式格式化日期并将其插入mysql数据库
好的,我有一个带有日期选择器的表单,它以dd-mm-yyyy格式提供输入值 我在检查每一步的输出,但我在第一步上卡住了。部分代码是这样的 Servlet控制器:Java—以正确的方式格式化日期并将其插入mysql数据库,java,mysql,date,Java,Mysql,Date,好的,我有一个带有日期选择器的表单,它以dd-mm-yyyy格式提供输入值 我在检查每一步的输出,但我在第一步上卡住了。部分代码是这样的 Servlet控制器: Pacijent pacijent = new Pacijent(); try { Date datum = new SimpleDateFormat("dd-mm-yyyy").parse(request.getParameter("datum")); pacijent.setDatum(datum); } catch
Pacijent pacijent = new Pacijent();
try {
Date datum = new SimpleDateFormat("dd-mm-yyyy").parse(request.getParameter("datum"));
pacijent.setDatum(datum);
} catch (ParseException e) {
e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
public class Pacijent {
private int id;
private String ime;
private String prezime;
private Date datum;
private String adresa;
// Getters and Setters...
}
Pacijent pacijent = new Pacijent();
try {
Date dop = new SimpleDateFormat("dd-MM-yyyy").parse(request.getParameter("datum"));
pacijent.setDatum(dop);
} catch(ParseException e) {
e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
Pacijent类:
Pacijent pacijent = new Pacijent();
try {
Date datum = new SimpleDateFormat("dd-mm-yyyy").parse(request.getParameter("datum"));
pacijent.setDatum(datum);
} catch (ParseException e) {
e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
public class Pacijent {
private int id;
private String ime;
private String prezime;
private Date datum;
private String adresa;
// Getters and Setters...
}
Pacijent pacijent = new Pacijent();
try {
Date dop = new SimpleDateFormat("dd-MM-yyyy").parse(request.getParameter("datum"));
pacijent.setDatum(dop);
} catch(ParseException e) {
e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
在PacijentDao类中插入函数
public void addPacijent(Pacijent pacijent) {
try {
PreparedStatement ps = connection.prepareStatement("INSERT INTO pacijent (ime, prezime, datum, adresa) VALUES (?,?,?,?)");
ps.setString(1, pacijent.getIme());
ps.setString(2, pacijent.getPrezime());
ps.setDate(3, (Date) pacijent.getDatum());
ps.setString(4, pacijent.getAdresa());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addPacijent(Pacijent pacijent) {
try {
PreparedStatement ps = connection.prepareStatement("INSERT INTO pacijent (ime, prezime, datum, adresa) VALUES (?,?,?,?)");
ps.setString(1, pacijent.getIme());
ps.setString(2, pacijent.getPrezime());
ps.setDate(3, new java.sql.Date(pacijent.getDatum().getTime()));
ps.setString(4, pacijent.getAdresa());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
在我点击提交按钮后,它会像下面这样输出我的日期2017年1月18日星期三00:04:00 CET。我需要帮助以mysql接受的方式解析它。数据库中的基准字段为日期格式
谢谢ps.setDate();请求与java.util.Date不同的java.sql.Date
你可以尝试使用
ps.setDate("a", new java.sql.Date(pacijent.getDatum().getTime()));
or use a timestamp
ps.setTimestamp(3, new Timestamp(pacijent.getDatum().getTime()));
好的,我已经找到了一个方法来做到这一点。这是正确的代码。 Servlet控制器:
Pacijent pacijent = new Pacijent();
try {
Date datum = new SimpleDateFormat("dd-mm-yyyy").parse(request.getParameter("datum"));
pacijent.setDatum(datum);
} catch (ParseException e) {
e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
public class Pacijent {
private int id;
private String ime;
private String prezime;
private Date datum;
private String adresa;
// Getters and Setters...
}
Pacijent pacijent = new Pacijent();
try {
Date dop = new SimpleDateFormat("dd-MM-yyyy").parse(request.getParameter("datum"));
pacijent.setDatum(dop);
} catch(ParseException e) {
e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
在PacijentDao类中插入函数
public void addPacijent(Pacijent pacijent) {
try {
PreparedStatement ps = connection.prepareStatement("INSERT INTO pacijent (ime, prezime, datum, adresa) VALUES (?,?,?,?)");
ps.setString(1, pacijent.getIme());
ps.setString(2, pacijent.getPrezime());
ps.setDate(3, (Date) pacijent.getDatum());
ps.setString(4, pacijent.getAdresa());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addPacijent(Pacijent pacijent) {
try {
PreparedStatement ps = connection.prepareStatement("INSERT INTO pacijent (ime, prezime, datum, adresa) VALUES (?,?,?,?)");
ps.setString(1, pacijent.getIme());
ps.setString(2, pacijent.getPrezime());
ps.setDate(3, new java.sql.Date(pacijent.getDatum().getTime()));
ps.setString(4, pacijent.getAdresa());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
格式应为“dd-MM-yyyy”。小写的
mm
表示分钟,大写的表示月。FYI的副本,像、java.text.SimpleTextFormat等麻烦的旧日期时间类现在被类取代了。看见