簡體   English   中英

java如何從數據庫中檢索數據

[英]java how retrieve data from database

我有代碼

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;
    }

如果value是string,它可以工作。 但如果它是整數? 還是布爾? 如何修改這個方法,以便它是通用的,無論我得到什么類型的數據,我仍然將其作為字符串返回?

首先在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
}

//你可以為其他類型做同樣的事情


在這一行

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

如果字符串然后使用

output =   rs.getString(1);

如果是int

output =   rs.getInt(1);

點擊oracle獲取更多信息

如果不使用ResultSetMetaData類來獲取列類型,則無法准確地執行此操作。

根據列的類型獲取列數據。

您從結果集中獲取值,假設它始終是String並嘗試對Object實例進行類型轉換。 您應該根據類型使用檢索方法。 大多數情況下,我們將知道從中重試數據的列值的數據類型。 您可以根據列的類型編寫程序。 這就是為什么ResultSet API為每種數據類型都有一個方法。

For String

rs.getString(1);

For Int

rs.getInt(1)

請閱讀ResultSet的文檔

 while (rs.next()) 
 {
       String[] data;
       data = new String[100];
       data[i] = rs.getString("smth");
       i = i + 1;

  }

試試這個你在數組中得到你的數據..使用數組而不是對象。

toString()怎么樣?

while (rs.next()) {
  output = rs.getObject(1).toString();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM