I'm using the latest JDBC driver for SQL server 2005 (1.0.809.102).
Retrieving stored procedures column information returns "-9" data type for nvarchar:
public class driver {
public static void main(String[] args) throws java.lang.Throwable {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
java.util.Properties properties = new java.util.Properties ();
properties.put("username", "sa");
properties.put("password", "sa");
properties.put("database", "GHTDB");
Connection con = DriverManager.getConnection("jdbc:sqlserver://POWERGH", properties);
ResultSet rs = con.getMetaData().getProcedureColumns("GHTDB", null, "SalesByCategory", null);
while (rs.next()) {
int i = rs.getInt("DATA_TYPE");
String s = rs.getString("TYPE_NAME");
System.out.println(i); // prints -9 for nvarchar
System.out.println(s);
}
}
}
Is this behavior documented anywhere and is by design?
Any help will be appreciated,
Regards,
Kosta
Kosta:
java.sql.Types has no value for any of the unicode text types so we return the SQL Server value for nvarchar (-9) rather than mis-reporting the type as a non-unicode varchar (12).
Both options here are bad, although, returning 12 in this case has the advantage of being wrong in the company of most other JDBC drivers, including our SQL Server 2000 JDBC driver.
If you think we should fix this, please file a bug at the product feedback center (http://lab.msdn.microsoft.com/productfeedback/) and we'll revisit the issue and make a change or doc it.
-shelby
Shelby Goerlitz
SQL Server Data Programmability -- JDBC
No comments:
Post a Comment