4

我有代码

public static String getData(String query) {
        String output = "";
        try {
            String connectionUrl = "jdbc:sqlserver://localhost:1234;databaseName=123;user=123;password=123";
            Connection con = null;
            Statement stmt = null;
            ResultSet rs = null;
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                con = DriverManager.getConnection(connectionUrl);
                String SQL = "select smth from tableName where smth";
                stmt = con.createStatement();
                rs = stmt.executeQuery(query);
                while (rs.next()) {
                    output =  (String) rs.getObject(1);
                }
                rs.close();
        }
        catch (Exception e) {

            return "ERROR while retrieving data: " + e.getMessage();
        }
        return output;
    }

如果值是字符串,它会起作用。但如果是整数呢?还是布尔值?如何修改此方法使其通用,无论我得到什么类型的数据,我仍然将它作为字符串返回?

4

6 回答 6

3

首先在 ResultSet rs 中检索结果,然后您可以编写如下代码。

您可以检查对象的实例,然后分配值。


String str;

Object obj = (Object)rs.getObject(1);

if(obj instanceof String){
   //do you work here for string like below
     str=(String)obj;
}
else if (obj instanceof Integer){
   //do your work for Integer
}

// 你可以对其他类型做同样的事情


于 2013-10-22T10:17:02.000 回答
2

在这一行

output =  (String) rs.getObject(1);

如果字符串然后使用

output =   rs.getString(1);

如果是整数

output =   rs.getInt(1);

单击甲骨文了解更多信息

于 2013-10-22T10:12:24.470 回答
1

如果不使用ResultSetMetaData类来获取列类型,您将无法准确地做到这一点。

根据列的类型获取列数据。

于 2013-10-22T10:15:16.700 回答
1

您从结果集中获取值,假设它始终是 String 并尝试对 Object 实例进行类型转换。您应该根据类型使用检索方法。大多数情况下,我们将知道重试数据的列值的数据类型。您可以根据列的类型编写程序。这就是为什么 ResultSet API 对每种数据类型都有一个方法。

For String

rs.getString(1);

For Int

rs.getInt(1)

请阅读ResultSet的文档

于 2013-10-22T10:17:21.853 回答
1
 while (rs.next()) 
 {
       String[] data;
       data = new String[100];
       data[i] = rs.getString("smth");
       i = i + 1;

  }

试试这个,你的数据在数组中。使用数组而不是对象。

于 2013-10-22T10:20:56.667 回答
0

toString() 呢?

while (rs.next()) {
  output = rs.getObject(1).toString();
}
于 2013-10-22T10:14:03.353 回答