# JDBC erkennt anstatt TinyInt ein Bit (MYSQL)



## Sponky (20. Apr 2009)

Hallo,
ich hab folgendes Problem.
Ich schreibe im Moment ein einem Komandozeileninterpreter der hauptsächlich MYSQL-Datenbanken updatet und verändert.
Ich möchte nun eine Tabelle in eine XML-Datei schreiben und hierbei auch den Aufbau der Spalten ausgeben.
Es funktioniert auch alles super mit meinem Code, jedoch scheint es mir so, als würde der JDBC-Treiber den Datentyp TinyInt nicht richtig interpretieren und gibt mir als Datentyp ein Bit zurück....
Weiß einer woran das liegen kann?
Oder hat jemand ggf. einen alternativen vorschlag?
Unten mein Code mit dem ich mir Testweise alle Metadaten der Spalte ausgeben lasse. Jedoch erhalte ich wie gesagt bei einem TinyInt einen Bit als Typname und erhalte auch als TypID eine -7 (TinyInt = -6).

```
Connection connection = tool.dbConnection.getConnection(dbVarName); 
      DatabaseMetaData dbMD = connection.getMetaData();
      ResultSet tables = dbMD.getTables(null, null, "%", null);
      while (tables.next()) {
        System.out.println("Tabelle: " + tables.getString("TABLE_NAME"));
        ResultSet columns = dbMD.getColumns(null, "&", tables.getString("TABLE_NAME"), null);
        while (columns.next()) {
          for(int column_index = 1; column_index < columns.getMetaData().getColumnCount(); column_index++){
            System.out.println("      " + columns.getMetaData().getColumnName(column_index) + ":" + columns.getString(column_index));
          }
          System.out.println("   --------------------------");
        }
        System.out.println("-----------------------------------------------");
      }
```

Edit: Achso meine Versionen sind:
Datenbankversion: 5.1.30-community
Treiberversion: mysql-connector-java-5.1.7


----------



## maki (20. Apr 2009)

Welche Treiberklasse nutzt du?


----------



## Sponky (20. Apr 2009)

Sorry weiß aber grad nicht was du mit Treiberklasse meinst.
Also werf ich mal mit begriffen rum 
 MySQL Cennector/5.1
com.mysql.jdbc.Connection;


----------



## maki (20. Apr 2009)

Dachte eher an com.mysql.jdbc.Driver (richtig) oder org.gjt.mm.mysql.Driver (falsch).


----------



## Sponky (20. Apr 2009)

Also ich hab ja nicht so viel Ahnung aber weder die eine noch die andere Klasse wird von mir benutzt da ich als einzigstes die  com.mysql.jdbc.Connection Klasse importieren.
Der Treibername meiner Connection lautet auch: MySQL-AB JDBC Driver


----------



## Sponky (20. Apr 2009)

Ahh mir fällt jetzt grad noch auf.
Ich importiere auch noch den java.sql.DriverManager


----------



## Sponky (21. Apr 2009)

Okay. Ich hab jetzt die Lösung 
Der Treiber ist mehr oder weniger dran schuld, da standartmäßig die Eigenschaft "tinyInt1isBit" auf true steht...
Man muß einfach nur beim Aufbauen einer Connection den Properties den richtigen Wert mitgeben:

```
Properties properties = new Properties();
      /*
      andere Properties wie user, password, usw.
      */
      properties.setProperty("tinyInt1isBit", "false");
      connection = DriverManager.getConnection(connectionString, properties);
```
Dankeschön trotzdem für deine Bemühungen.
Hier noch der Link für die Konfigurationseigenschaften des Connector/J:
MySQL :: MySQL 5.1 Referenzhandbuch :: 25.3.4.1 Driver/Datasource-Klassennamen, URL-Syntax und Konfigurationseigenschaften für Connector/J

MFG
Sponky


----------

