首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不知道列类型的情况下获取列的值

问如何在不知道列类型的情况下获取列的值
EN

Stack Overflow用户
提问于 2013-03-09 12:16:35
回答 2查看 3.4K关注 0票数 8

我正在根据用户选择要在结果中显示的字段动态创建查询。问题是,当从数据库检索数据时,我通常使用getXXX()方法检索适当的类型。但是在这种情况下,我不知道合适的类型是什么,因为列是随机选择的。

我是否可以不指定数据类型XXX而以字符串格式获取数据?我正在使用MySQL和Servlet。

EN

回答 2

Stack Overflow用户

发布于 2013-03-09 12:19:28

您可以使用泛型getObject方法:

获取此ResultSet对象当前行中指定列的值,作为Java编程语言中的对象。 此方法将将给定列的值作为Java对象返回。Java对象的类型将是对应于列的SQL类型的默认Java对象类型,遵循JDBC规范中指定的内置类型的映射。如果该值是SQL NULL,则驱动程序将返回一个Java null。

票数 12
EN

Stack Overflow用户

发布于 2013-03-09 12:32:02

据我所知,如果您希望在Java对象中获得结果,可以简单地使用getString()。我认为MySQL驱动程序负责在通过getXXX()指定的任何Java对象中反序列化字节流。给定以下init脚本:

代码语言:javascript
复制
DROP TABLE IF EXISTS thing;

CREATE TABLE thing (
  a_int int,
  a_string text,
  a_date date
);

INSERT INTO thing (a_int, a_string, a_date)
   VALUES ('1234', 'Hello world', CURRENT_DATE() );

守则如下:

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
    MysqlDataSource db = new MysqlDataSource();
    db.setDatabaseName("test");
    Connection conn = db.getConnection("test", "test");

    ResultSet res = conn.prepareStatement("SELECT * FROM thing").executeQuery();
    res.next();
    System.out.println("Get a int as a string: " + res.getString("a_int"));

}

它只是打印Get a int as a string: 1234。您甚至可以将a_date列作为int,并且在我的机器上将其转换为2013。因此,在驱动程序从服务器检索到一个非类型化字节流之后,绑定似乎发生了。有时,如果在getInt()列上尝试TEXT,则转换失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15310549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档