Soru JDBC ResultSet getString her zaman bir String temsilini döndürüyor mu?


Biçimlendiriyorum ResultSet CSV dosyasına çıkış yapmak için Bu nedenle, sonuç kümesinin Java türlerini umursamıyorum, belki de metin veya sayı olup olmadığını bilmenin ötesinde.

JDBC, getString'in her zaman değerlerin dize olarak temsil edilmesini sağlar mı, tek değer için en düşük değerdir (kendimle ilgili kaygılanmam gerekmez) java.sql.Types.ARRAY,java.sql.Types.JAVA_OBJECT ve birkaç diğerleri).

Örneğin. verilmiş resultSetMetaData.getColumnType(i) bir Types.FLOAT ya da Types.BIGDECIMAL. irade rs.GetString(i) her zaman biraz String verir?

Örneğin getString bir SQLException atar veya getXXX bana değeri verirse null döndürür.


18
2018-01-15 13:36


Menşei




Cevaplar:


Evet, şuna bak. http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html

JDBC, farklı SQL türlerini almak için kullanabileceğinizXXX yöntemlerine kadar pek çok enlemesine izin verir. Örneğin, getInt yöntemi, sayısal veya karakter türlerinden herhangi birini almak için kullanılabilir. Aldığı veriler bir int'ye dönüştürülür; Yani, SQL türü VARCHAR ise, JDBC VARCHAR'dan bir tamsayı ayrıştırmaya çalışır. Ancak, getInt yöntemi yalnızca SQL INTEGER türlerini almak için önerilir ve BINARY, VARBINARY, LONGVARBINARY, DATE, TIME veya TIMESTAMP SQL türleri için kullanılamaz.

Ama dikkatli olun, farklı JDBC sürücüsü farklı sonuçlar verebilir.


12
2018-01-15 13:41



Bağlantılı kılavuzda güncelleme:  Note that although the method getString is recommended for retrieving the SQL types CHAR and VARCHAR, it is possible to retrieve any of the basic SQL types with it. Getting all values with getString can be very useful, but it also has its limitations. For instance, if it is used to retrieve a numeric type, getString converts the numeric value to a Java String object, and the value has to be converted back to a numeric type before it can be operated on as a number. In cases where the value is treated as a string anyway, there is no drawback. - Nefreo


java.lang.String son sınıf - bir alt sınıfa sahip olamaz. Yani döndüren herhangi bir yöntem String ya sınıfın bir örneğini döndürür java.lang.Stringya da nullveya bir istisna atın.

Dönüşüm için, String olmayan türlerden dönüştürmenize izin verecekse, JDBC sürücüsüne kalmıştır. Birçoğunun onunla ilgili bir sorun olacağından şüpheleniyorum.

Bunun yerine bunu yapmanızı öneririm:

Object item = resultSet.getObject(i);
String strValue = (item == null ? null : item.toString());

Bu daha sağlam olmalı getObject() her zaman mantıklı olanı yapar.


5
2018-01-15 13:39



Ya da atmak SQLException - kdgregory
Ve sorun şu ki, getString bir SQLException atar veya getXXX bana değeri verirse null döndürür. - Anonym