2011-07-21 26 views
10

PreparedStatement'un setObject modelini kullanırken, TEXT (bir MySQL DB'de) türünde bir sütun için yöntem, son parametre ne olmalıdır?MySQL TEXT için java.sql.Types eşdeğeri nedir?

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

stmt bir PreparedStatement olduğu ve Typesjava.sql.Types geçerli:

Örneğin, ben bu VARCHAR sütun için Tamam olduğunu biliyoruz.

Ancak DB sütununun tipi TEXT ise, hala VARCHAR kullanmalı mıyım? veya belki BLOB veya CLOB?

+1

FYI: Bu bilgiyi ['DatabaseMetaData.getColumns'] kullanarak edinebilirsiniz (http://download.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getColumns%28java. lang.String,% 20java.lang.String,% 20java.lang.String,% 20java.lang.String% 29) yöntemi. Connection.getMetaData() 'yi çağırarak bir' DatabaseMetaData' nesnesi edinebilirsiniz. 'GetColumns' tarafından döndürülen 'ResultSet', aradığınız şey olan" DATA_TYPE "adlı bir" int "sütununa sahiptir. –

cevap

7

cevap (EVET, VARCHAR içindir) burada bulunabilir:

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html (güncellenmiş modası geçmiş kırık link) burada

ve MYSQL TEXT tip

hakkında bazı bilgiler verilmiştir kullanmadığınız Neden http://dev.mysql.com/doc/refman/5.0/en/blob.html

+0

Teşekkürler. Bu sayfalara gittim ve "GetColumnClassName" dönüş değerinin ihtiyacım olan şey olduğundan emin değildim, bu yüzden bunu açıklığa kavuşturduğun için teşekkürler :) –

+3

İlgili bilgiler sadece bağlantıyla bağlantılı olarak gönderilmeli ... –

0

burada Oracle Doc for sql Types hiçbir METİN alan vardır, ama şimdi o boyut bir uygulama kodlanmış hile olarak 21.845 olan bilgi kullanabilirsiniz (ileride görünebilir - Bilmen gerekiyorsa daha sonra bu metin alanı - gerçek alan boyutu seçtiğiniz bir şeydir ve metnin geri kalanı başka bir yerde MySql tarafından ezberlenir)

Yani "VARCHAR türünü kullan" ile ilk yanıt çalışıyor (muhtemelen kütüphane setString çağrısı)

"setString" cevabı da çalışıyor (kararları kendiniz almak istiyorsanız bir anahtar (field_type) önceliği var) - ben Kodun hatalarını daha kolay ayıklamak için bu seçeneği kullanın - hız her iki durumda da maliyet = switch + setString ile aynıdır)

Linkler ve onaylar için hepinize teşekkür ederiz!