我正在尝试让我的代码与代码中的SimpleDateFormat类一起使用。有人知道为什么吗?祝朱莉有美好的一天
[当我在导入位置运行代码时:导入java.util.Date。我收到错误:这些行中的“日期类型不明确”:
Date startDate = format.parse(req.getParameter("startDate"));
Date endDate = format.parse(req.getParameter("endDate"));
当我运行导入的代码时:import java.sql.Date;我收到错误:
Date startDate = format.parse(req.getParameter("startDate"));
Date endDate = format.parse(req.getParameter("endDate"));
“类型不匹配:无法从java.util.Date转换为java.sql.Date”
import java.sql.Date;
package WorkPackage;
import java.io.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.util.*;
import java.util.Date.*;
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
String connectionURL = "jdbc:mysql://localhost/NekiWork";
Connection connection=null;
//String startDate = req.getParameter("startDate");
//String endDate= req.getParameter("endDate");
try {
//Load database driver
Class.forName("com.mysql.jdbc.Driver");
//Connection to the database
connection = DriverManager.getConnection(connectionURL, "root", "");
//Getting the data from database
String sql = "SELECT *, (Day_hours + (Day_minutes / 60)) AS Allday_hours FROM Workdata "
+ "WHERE Date = startdate = ? AND endDate = ? ";
PreparedStatement pst = connection.prepareStatement(sql);
//Date startDate;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = format.parse(req.getParameter("startDate"));
Date endDate = format.parse(req.getParameter("endDate"));
pst.setDate(1,startDate);
pst.setDate(2, endDate);
java.util.Date
和java.util.Date
不同。数据库仅接受java.sql.Date
。为此,您需要将java.sql.Date
转换为java.sql.Date
。
尝试一下:
java.util.Date
现在您可以使用此java.sql.Date
来使用准备好的语句来设置参数值。
java.util.Date util_StartDate = format.parse( req.getParameter("startDate") );
java.sql.Date sql_StartDate = new java.sql.Date( util_StartDate.getTime() );
在要与jdbc一起使用的其他特定于SQL的日期上使用相同的过程。
同时导入了sql_StartDate
和pst.setDate( 1, sql_StartDate );
名称空间的地方,编译器无法唯一地确定java.sql.*
令牌的最佳类型。在这种情况下,您可以使用名称空间来限定类型:
java.util.*
Date