2013-03-03 196 views
-1

我正在使用连接到DB2数据库的Java应用程序。我想要做的是从我查询过的DB2表中获取一个值,并将其赋值给java中的字符串值,请教我如何操作?我曾尝试过自己,我会告诉你我的代码,但我想知道这是不对的,请大家帮帮忙...如何从DB2数据库获取值并将其分配给字符串值?

public class GetValueFromDB2 implements ActionListener{ 
    static String value; 

    public void actionPerformed(ActionEvent e){ 
     Object source = e.getSource(); 
     if(source==testValue){ //testValue = a button to test my results 
     setValue(getValue()); 
     JOptionPane.showMessageDialog(null, value); 
     } 
    } 

    public static void main(String[] args){ 
     //GUI Implementations here... 
    } 

    public static void setValue(String val){ 
    try{ 
     Connection con = DriverManager.getConnection("jdbc:db2://localhost:50000/db","username","password");   
     String sql = "select column1 from \"user\".\"mytable\" where column2='abc'"; 
     Statement st = con.createStatement(); 
     ResultSet rs = st.executeQuery(sql); 
     val = rs.getString(1); //I think this is the part I'm mistaken 
     value = val; 
    }catch(SQLException e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 
    } 

    public static String getValue(){ 
     return value; 
    } 
} 

而在我的数据库中的表是这样的:

"table: mytable, schema: user" 
column1   column2 
--------   -------- 
john    abc 
jeff    xyz 
ian    123 

所以基本上,JOptionPane应该显示“john”作为字符串输出,这就是我想要做的,请帮助我,我真的很需要这个。

  • 我100%肯定,我的数据库连接,它只是我不能得到所期望的价值我想,因为好歹我做了错误的方法。
+0

你说过程序应该做什么,但不是它实际做了什么。 – 2013-03-03 10:33:54

+0

请你详细说明一下吗?我的问题和我提供的细节可能是模糊的,但我相信我已经提供了所有需要的细节......如果您对某些事情感到困惑,请让我知道,请......我至少需要弄明白不惜一切代价... – 2013-03-03 10:44:16

+0

当你运行这段代码时会发生什么?你说过“我知道这是错误的”。你说过“它应该显示约翰”。但是你没有说出它在运行时的功能。有什么异常?怎么了? – 2013-03-03 10:46:57

回答

2

你忘了所获得的价值之前调用rs.next()

if (rs.next()) { 
    val = rs.getString(1); 
} 

如果你不叫rs.next(),光标不指向任何行。

+0

非常感谢@ jb-nizet,它工作!我真的非常感谢你,非常感谢你纠正了我犯的一个简单的错误,再次感谢你! – 2013-03-03 13:01:08

相关问题