提交 4312fc58 authored 作者: Thomas Mueller's avatar Thomas Mueller

SimpleResultSet now supports getColumnTypeName and getColumnClassName.

上级 bd36fa54
...@@ -29,6 +29,7 @@ import java.util.Map; ...@@ -29,6 +29,7 @@ import java.util.Map;
import org.h2.constant.ErrorCode; import org.h2.constant.ErrorCode;
import org.h2.message.DbException; import org.h2.message.DbException;
import org.h2.util.New; import org.h2.util.New;
import org.h2.value.DataType;
//## Java 1.6 ## //## Java 1.6 ##
import java.sql.NClob; import java.sql.NClob;
...@@ -977,13 +978,15 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData { ...@@ -977,13 +978,15 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
} }
/** /**
* Returns null. * Returns the Java class name if this column.
* *
* @param columnIndex (1,2,...) * @param columnIndex (1,2,...)
* @return null * @return the class name
*/ */
public String getColumnClassName(int columnIndex) { public String getColumnClassName(int columnIndex) throws SQLException {
return null; int sqlType = getColumn(columnIndex - 1).sqlType;
int type = DataType.convertSQLTypeToValueType(sqlType);
return DataType.getTypeClassName(type);
} }
/** /**
...@@ -1007,13 +1010,15 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData { ...@@ -1007,13 +1010,15 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
} }
/** /**
* Returns null. * Returns the data type name of a column.
* *
* @param columnIndex (1,2,...) * @param columnIndex (1,2,...)
* @return null * @return the type name
*/ */
public String getColumnTypeName(int columnIndex) { public String getColumnTypeName(int columnIndex) throws SQLException {
return null; int sqlType = getColumn(columnIndex - 1).sqlType;
int type = DataType.convertSQLTypeToValueType(sqlType);
return DataType.getDataType(type).name;
} }
/** /**
......
...@@ -20,6 +20,7 @@ import java.sql.DatabaseMetaData; ...@@ -20,6 +20,7 @@ import java.sql.DatabaseMetaData;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.sql.Types; import java.sql.Types;
...@@ -681,6 +682,20 @@ public class TestFunctions extends TestBase implements AggregateFunction { ...@@ -681,6 +682,20 @@ public class TestFunctions extends TestBase implements AggregateFunction {
assertTrue(rs.next()); assertTrue(rs.next());
assertEquals("Hi", new String(rs.getBytes(1))); assertEquals("Hi", new String(rs.getBytes(1)));
rs = stat.executeQuery("select sql('select 1 a, ''Hello'' b')");
assertTrue(rs.next());
rs2 = (ResultSet) rs.getObject(1);
rs2.next();
assertEquals(1, rs2.getInt(1));
assertEquals("Hello", rs2.getString(2));
ResultSetMetaData meta2 = rs2.getMetaData();
assertEquals(Types.INTEGER, meta2.getColumnType(1));
assertEquals("INTEGER", meta2.getColumnTypeName(1));
assertEquals("java.lang.Integer", meta2.getColumnClassName(1));
assertEquals(Types.VARCHAR, meta2.getColumnType(2));
assertEquals("VARCHAR", meta2.getColumnTypeName(2));
assertEquals("java.lang.String", meta2.getColumnClassName(2));
stat.execute("CREATE ALIAS blob2stream FOR \"" + getClass().getName() + ".blob2stream\""); stat.execute("CREATE ALIAS blob2stream FOR \"" + getClass().getName() + ".blob2stream\"");
stat.execute("CREATE ALIAS stream2stream FOR \"" + getClass().getName() + ".stream2stream\""); stat.execute("CREATE ALIAS stream2stream FOR \"" + getClass().getName() + ".stream2stream\"");
stat.execute("CREATE TABLE TEST_BLOB(ID INT PRIMARY KEY, VALUE BLOB)"); stat.execute("CREATE TABLE TEST_BLOB(ID INT PRIMARY KEY, VALUE BLOB)");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论