2014-03-12 82 views
2

我想讓我的代碼在代碼中與SimpleDateFormat類一起工作。有人知道爲什麼嗎?祝你有個愉快的一天Julie類型不匹配:無法從java.util.Date轉換爲java.sql.Date

當我運行導入的代碼時:import java.util.Date。我得到的錯誤: 「之類的日期不明確」中的臺詞:

Date startDate = format.parse(req.getParameter("startDate")); 
Date endDate = format.parse(req.getParameter("endDate")); 

當我運行在那裏我有進口的代碼:進口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); 

回答

4

java.util.Datejava.sql.Date是不同的。數據庫只接受java.sql.Date
對此,您需要將java.util.Date轉換爲java.sql.Date

試試這個:

​​

現在你可以使用這個sql_StartDate使用準備好的語句設置參數值。

pst.setDate(1, sql_StartDate); 

在其他sql特定日期上使用相同的過程來使用jdbc。

+0

非常感謝您解決了這個問題:-) – Julie24

1

如果你有java.sql.*java.util.*命名空間都進口的,編譯器無法唯一確定令牌的最佳類型。在這種情況下,你可以與命名空間限定的類型:

java.util.Date startDate = format.parse(req.getParameter("startDate")); 
+0

非常感謝您的回答。當我這樣做時,我在我的pst.setDate(1,startDate)中出現錯誤;它說: 「類型PreparedStatement中的方法setDate(int,java.sql.Date)不適用於參數(int,java.util.Date)」 你知道這是爲什麼嗎? – Julie24

相關問題