2011-07-21 25 views
10

Podczas korzystania z metody PreparedStatement 's w przypadku metody typu TEXT (w bazie danych MySQL DB), jaki powinien być ostatni parametr?Co to jest odpowiednik java.sql.Types dla TEKSTU MySQL?

Na przykład, wiem, że to jest ok dla kolumny VARCHAR:

stmt.setObject(i, "bla", Types.VARCHAR);

gdzie stmt jest PreparedStatement i Types jest java.sql.Types.

Ale jeśli typ kolumny DB to TEKST, to czy nadal powinienem używać VARCHAR? A może BLOB lub CLOB?

+1

FYI: Możesz uzyskać te informacje za pomocą ['DatabaseMetaData.getColumns'] (http://download.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getColumns%28java. lang.String, metoda% 20java.lang.String,% 20java.lang.String,% 20java.lang.String% 29). Możesz zdobyć obiekt 'DatabaseMetaData', wywołując' connection.getMetaData() '. 'ResultSet' zwrócony przez' getColumns' ma kolumnę 'int' o nazwie' DATA_TYPE', której właśnie szukasz. –

Odpowiedz

7

Odpowiedź (tak, są przeznaczone do wykorzystania VARCHAR) można znaleźć tutaj:

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html (zaktualizowane nieaktualne złamane Link)

i tutaj jest kilka informacji o MYSQL TEXT typu

http://dev.mysql.com/doc/refman/5.0/en/blob.html

+0

Dzięki. Byłem na tych stronach i nie byłem pewien, że wartość zwracana 'GetColumnClassName' była tym, czego potrzebowałem, więc dziękuję za wyjaśnienie tego :) –

+3

Odpowiednie informacje powinny być umieszczone w pytaniu, a nie tylko linkowane ... –

0

Nie ma tu Oracle Doc for sql Types polu tekstowym, ale może pojawić się w przyszłości (teraz można korzystać z informacji, że rozmiar jest 21845 jako realizacji zakodowanego na stałe trik - jeśli trzeba wiedzieć później, że to jest pole TEKSTU - rzeczywisty rozmiar pola to coś, co wybierzesz, a reszta tekstu zostanie zapamiętana gdzie indziej przez MySql)

Działa pierwsza odpowiedź z "użyj VARCHAR jako typ" (prawdopodobnie biblioteka tworzy setString call)

Odpowiedź "setString" również działa (poprzedzona przełącznikiem (field_type), jeśli chcesz podejmować decyzje samemu - ja e tę opcję w celu łatwiejszego debugowania kodu - prędkość jest taka sama jak koszt = przełącznik + zestaw zmian w obu przypadkach)

Dziękuję wszystkim za linki i potwierdzenia!

Powiązane problemy