Datum util zu Datum sql umwandeln

Champion1908

Mitglied
Liebe Mitglieder!

Tut mir Leid, dass ich gleich wieder ein neues Thema öffne.
Obwohl ich schon viele Foren (inkl. diesem) nach dem Thema durchsucht und auch fündig wurde, helfen diese mir nichts.

Ich habe:

for(int i=0;i<listDate.size();i++)
{
long t = listDate.get(i).getTime(): //listDate ist eine ArrayList aus java.util.Date
erg.add(new java.sql.Date(t));
}

Exception:
Bei der Konvertierung eines char-Datentyps in einen datetime-Datentyp liegt der datetime-Wert außerhalb des gültigen Bereichs.
 
Zuletzt bearbeitet:
Hallo,

wann / wo wird die Exception geworfen? Poste mal bitte den Stacktrace (Exception.printStacktrace()) Dein Code-Ausschnitt sieht so weit richtig aus.

Gruß
BK
 
nicht in dieser methode, aber in der, wo ich ein insert statement habe:
ArrayList<java.sql.Date> time = getSQLDates(); //so heißt die obrige Methode

INSERT INTO t_email_monitoring....
...time.get(0) + "', " + "' " + time.get(1)
printStrack() wirft nichts besonderes aus. Sagt das selbe wie die getMessage()
 
Zuletzt bearbeitet:
Hallo,

lass dir mal bitte die SQL-Anweisung auf der Konsole ausgeben, bevor du sie abschickst. Eventuell ist die toString()-Methode bei der java.sql.Date-Klasse nicht richtig / anders als erwartet überladen.

Gruß
BK
 
OK, er gibt folgendes zurück:
wenn ich die toString()-Methode aufrufe: 2010-07-26
wenn ich die getTime()-M. aufrufe: 1280171992000
kA: Fehlen da nicht die Stunden, Minuten usw.?

ps: Wie markiere ich ein Thread auf Erledigt?
 
Vielleicht hilft der ganze code was

Code:
package connect;
import java.sql.*;
import java.util.ArrayList;
import java.sql.Date;
import javax.swing.JOptionPane;
import java.util.*;
import com.microsoft.sqlserver.jdbc.*;
import com.microsoft.*;
import com.microsoft.sqlserver.*;
import microsoft.sql.*;
/**
 * 
 * @author Champion
 * @version 1.0
 * @since 2010
 * 
 * This class reads the fields out of the Creater and turns them into a mySQL file

 */
public class ToSQL
{
	public ArrayList<Object> list;
	public ArrayList<java.util.Date> listDate;
	/**
	 * Creates a new ToSQL-Object and gets the given creater
	 * @param creater
	 */
	public ToSQL(ArrayList<Object> list, ArrayList<java.util.Date> dates)
	{
		setList(list);
		setListDate(dates);
	}

	public ArrayList<Object> getList() 
	{
		return list;
	}
	
	public ArrayList<java.sql.Date> getSQLDates()
	{
		ArrayList<java.sql.Date> erg = new ArrayList<java.sql.Date>();
		java.sql.Date temp = null;
		for(int i=0;i<listDate.size();i++)
		{
			long t = listDate.get(i).getTime();
			temp = new java.sql.Date(t);
			JOptionPane.showMessageDialog(null, "Temp: " + temp.toString() + "Time: " + temp.getTime());
			erg.add(temp);
		}
		return erg;
	}
	
	public void setList(ArrayList<Object> list) 
	{
		this.list = list;
	}
	
	public ArrayList<java.util.Date> getListDate()
	{
		return listDate;
	}

	public void setListDate(ArrayList<java.util.Date> listDate) 
	{
		this.listDate = listDate;
	}

	public void create()
	{
		ArrayList<java.sql.Date> time = getSQLDates();
		try
		{
			String url = "jdbc:sqlserver://dfs01;instanceName=data;databaseName=Monitoring";//"jdbc:sqlserver://dfvms01\\dataflow:1433"
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			Connection conn = DriverManager.getConnection(url, "ba", "klaaxx");
			Statement s = conn.createStatement();
			JOptionPane.showMessageDialog(null, conn.isValid(100));
			s.executeUpdate("INSERT INTO t_email_monitoring (absender, kundenname, modul, datumsent, datumreceived, emailtext, success)" +//da liegt das Problem
					"VALUES " +
					"('" + list.get(6).toString() + "', '" + list.get(1) + "', '" + list.get(2)
					+ "', '" + time.get(0) + "', '" + time.get(1) + "', '" + list.get(3)
					+ "', '" + list.get(0) + "')");
			conn.close();
		}
		catch(SQLException sqle)
		{
			JOptionPane.showMessageDialog(null, "SQLException: " + sqle.getMessage());
			sqle.printStackTrace();
		}
		catch(ClassNotFoundException cnfe)
		{
			JOptionPane.showMessageDialog(null, "Class not found: " + cnfe.getMessage());
			cnfe.printStackTrace();
		}
		catch(Exception ex)
		{
			JOptionPane.showMessageDialog(null, "Exception: " + ex.getMessage());
			ex.printStackTrace();
		}
	} 
}
 
Zuletzt bearbeitet:
Aber dran denken, die Connection/statement/resultset usw. in einem finally Block zu schließen, d.h. die Ressourcen freizugeben.
 
Connection hab ich im try-block zugemacht, resultset brauch ich keines. Das statement muss man auch schließen?

Schau ich gleich in der API.

Trotzdem weiterhin, wie wandelt man java.util.Datum in java.sql.Datum um?

Danke auf jeden Fall schon für die bisherigen Antworten!
 
Zurück