# DB warnungen bekommen



## Feld (5. Dez 2009)

Hallo

ich habe hier eine Funktion, die mir die warnungen direkt vom Datenbank ausgeben soll ( also die Warnungen, die man sieht, wenn man gleich in MySQL shell was eintippt )
Aber aus irgendeinem grund passiert da einfach nichts - ich kann machen was ich will - entweder bekomme ich java Exception oder gar nichts - weiß einer was bei mir fehlt?


```
/**
	 * get warnings and Exceptions from database
	 */
	protected void getWarnings ( )
	{
		try
		{
			SQLWarning warn = cn.getWarnings ( ); // cn ist die Connection
			while ( warn != null )
			{
				System.out.println ( "---------- hot warnings from database ------------" );
				System.out.println ( "SQLState: " + warn.getSQLState ( ) );
				System.out.println ( "Message:  " + warn.getMessage ( ) );
				System.out.println ( "Vendor:   " + warn.getErrorCode ( ) );
				System.out.println ( "" );
				warn = warn.getNextWarning ( );
				System.out.println ( "--------------------------------------------------" );
			}
		} catch ( SQLException e )
		{
			System.err.println ( e.getMessage ( ) );
		}
	}
```


----------



## fastjack (7. Dez 2009)

Welche Exception (und in welcher Zeile) tritt denn auf ? Ist die Connection cn initialisiert und geöffnet, oder vielleicht geschlossen ?


----------



## Feld (7. Dez 2009)

Was ich haben wollte ist folgendes:
Ich gebe z.B. in eine DATETIME Spalte 1993-05-20 rein - das wird gemacht, aber der wert von DATETIME-Spalte bleibt 0000-00-00 00:00:00. Es gibt nur eine Warnung von datenbank dafür, aber keine Exception.

Aus Java aus erfahre ich von dem Warnung gar nichts - und meine funktion sollte mir genau diese warnungen liefern. GetWarnings wird nach jedem Zugriff in auf DB im finally block aufgerufen. Hier ein kleines beispiel:


```
protected void sendQuery ( String in_query ) throws SQLException
	{
		cn.setAutoCommit ( true );
		Statement stmt;
		if ( ( cn == null ) || cn.isClosed ( ) ) { throw new SQLException ( "connection is null or closed" ); }
		try
		{
			stmt = cn.createStatement ( ResultSet.CLOSE_CURSORS_AT_COMMIT, ResultSet.TYPE_SCROLL_SENSITIVE );
			stmt.execute ( in_query );
		} catch ( MySQLIntegrityConstraintViolationException e )
		{
			System.err.println ( e.getMessage ( ) );
		} catch ( SQLException e )
		{
			System.err.println ( "sendQuery failed @ DBbase" );
		} finally
		{
			getWarnings ( );
		}
		
	}
```

Aber egal welche Warnungen oder Exceptions auftreten - ich bekomme nie eine Meldung von getWarnings


----------

