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

SimpleResultSet now supports getColumnTypeName and getColumnClassName.

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