从数据库向其分配值后变量为空

时间:2015-06-08 12:16:41

标签: java mysql database swing variables

我正在运行查询以返回与在表单中使用JComboBox(Course_Id)选择的Course_Name关联的slcCourse。查询似乎是正确的,至少我是这么认为的,JComboBox从表中返回正确的Course_Name。当我尝试在全局变量或局部变量中分配返回的值(应该是数据库表中的Course_Id并使用JOptionPane输出该变量时,它为空。我不确定为什么它没有被分配给变量,任何帮助都会非常感激。

与数据库的连接工作正常,因为我已经使用连接详细信息在同一个类中插入了记录。所以问题不在那里。

以下是代码:

public void courseIdentifier()
    {
        Connection conDBase = null;
        Statement stmt = null;
        ResultSet r = null;

        try
        {
            conDBase = getConnection();
            stmt = conDBase.createStatement();
            String courseSql = "SELECT Course_Id FROM a_courses WHERE Course_Name = '" 
                                    + slcCourse.getSelectedItem() + "';";
            r = stmt.executeQuery(courseSql);

            String s = r.getString("Course_Id");
            JOptionPane.showMessageDialog(null, s);
            conDBase.close();
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
        }
    }

如果您想查看连接详细信息,请在此处输入:

public class ConnectionDetails
{
    private static final String username = "root";
    private static final String password = "root";
    private static final String driver = "com.mysql.jdbc.Driver";
    private static final String url = "jdbc:mysql://localhost:3306/assignment?autoReconnect=true";

    public static String getUsername()
    {
        return username;
    }

    public static String getPassword()
    {
        return password;
    }

    public static String getDriver()
    {
        return driver;
    }

    public static String getUrl()
    {
        return url;
    }
}

1 个答案:

答案 0 :(得分:4)

在获取值之前,您应该在ResultSet上调用next()

if (r.next()) {
    String s = r.getString("Course_Id");
}

此外,您可能希望对从String中读取的ResultSet做一些事情。也许将它返回给方法的调用者。