Datentypen und Fehlerbehandlung - Beuth Hochschule für Technik

Werbung
Datentypen und Fehlerbehandlung
6
Datentypen und Fehlerbehandlung
6.1
Datentypen
JDBC-Typ
Java-Typ
CHAR
VARCHAR
LONGVARCHAR
NUMERIC
DECIMAL
BIT
TINYINT
SMALLINT
INTEGER
BIGINT
REAL
FLOAT
DOUBLE
BINARY
VARBINARY
LONGVARBINARY
DATE
TIME
TIMESTAMP
String
String
String
java.math.BigDecimal
java.math.BigDecimal
boolean
byte
short
int
long
float
double
double
byte[]
byte[]
byte[]
java.sql.Date
java.sql.Date Time
java.sql.Date Timestamp
TFH Berlin/Steyer
Datentypen und Fehlerbehandlung
6.2
Fehlerbehandlung
Fehlerbehandlung ist beim Datenbankprogrammieren ein wichtiges Thema. Denn zu den üblichen Syntax- und
Laufzeitfehlern kommen noch zwei weitere Gruppen hinzu: Mehrbenutzerfehler wegen aktuell gesperrtem
Datenbankzugriff, Anpassungsprobleme zwischen Programmiersprache und Datenbanksystem, z.B. bei den
Wertebereichen der Datentypen.
Datenbankprogramm mit Fehlerausgabe
import java.sql.*;
public class Fehlerprogramm
{ public static void main(String[] args) throws Exception
{ try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c = DriverManager.getConnection("jdbc:odbc:accessdb","","");
Statement s = c.createStatement();
ResultSet r = s.executeQuery("SELECT * FROM person");
while (r.next())
{ System.out.println(r.getString("vorname") + " " + r.getString("nachname"));
}
c.close();
} catch (SQLException exc) {
System.out.println ("SQLException:");
System.out.println ("SQLState : " + exc.getSQLState());
System.out.println ("Message : " + exc.getMessage());
System.out.println ("Vendor Code: " + exc.getErrorCode());
}
}
}
Fehlermöglichkeiten auf mehreren Ebenen
1) data source nicht vorhanden
Programmänderung
Connection c = DriverManager.getConnection("jdbc:odbc:accdb","","");
Ausgabe
SQLException:
SQLstate
: IM002
Message
: [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde
kein Standardtreiber angegeben.
Vendor Code : 0
2) connection nicht möglich (z.B. Datenbank nicht vorhanden oder gesperrt)
Programmänderung
keine
Ausgabe
SQLException:
SQLstate
: S1000
Message
: [Microsoft][ODBC Driver Manager] Datei ‚<unbekannt>’ nicht gefunden.
Vendor Code : -1811
TFH Berlin/Steyer
Datentypen und Fehlerbehandlung
3) falsche exec-Methode (executeQuery, execute)
Programmänderung
ResultSet r = s.executeQuery("UPDATE person SET vorname = 'Max'");
Ausgabe
SQLException:
SQLstate
: null
Message
: [Microsoft][ODBC Driver Manager] No ResultSet was produced.
Vendor Code : 0
4) SQL-Syntax falsch
Programmänderung
ResultSet r = s.executeQuery("SELECT FROM person");
Ausgabe
SQLException:
SQLstate
: 37000
Message
: [Microsoft][ODBC Driver Manager] Die SELECT-Anweisung schliesst ein reserviertes Wort oder
einen Argumentnamen ein, das/der falsch, mit falscher Zeichensetzung oder überhaupt nicht eingegeben wurde.
Vendor Code : -3504
5) falsche Datenbezeichner
Programmänderung
ResultSet r = s.executeQuery("SELECT nr FROM person99");
Ausgabe
SQLException:
SQLstate
: S0002
Message
: [Microsoft][ODBC Driver Manager] Das Microsoft Jet-Datenbankmodul findet die Eingangstabelle
oder Abfrage ‚person99’ nicht. Stellen Sie sicher, dass sie existiert und der Name richtig eingegeben wurde.
Vendor Code : -1305
6) get-Typ falsch
Programmänderung
{ System.out.println(r.getInt("vorname") + " " + r.getString("nachname"));
Ausgabe
SQLException:
SQLstate
: 22005
Message
: [Microsoft][ODBC Driver Manager] Ungültiger Zeichenwert für Konvertierungsangabe, bei Spalte
1 <vorname>
Vendor Code : 39
7) ResultSet leer abfangen
if (!r.next())
System.out.println("Ergebnismenge leer");
TFH Berlin/Steyer
Herunterladen