使用在其他类中声明的变量

时间:2012-10-22 05:43:30

标签: java

好吧,我有点困在我要问的地方

我有两个名为main和dbconnect的类

在我的dbconnect中,我有连接到数据库的所有必要方法,在我的主类中我创建了GUI,但问题是我在main中声明了变量(因为它们由文本框表示),现在想要使用它们在我的dbconnect类

我的dbconnect类看起来像是

import javax.swing.*;
import java.sql.*;

public class DBCONNECT
{
Connection conn;
public void connect()
{

    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        conn = DriverManager.getConnection("jdbc:odbc:DriverConn");
    }
    catch(Exception se)
    {
        JOptionPane.showMessageDialog(null, "Error: Could not load driver " + se.getMessage());
    }
}
public void dissconect()
{
    try
    {
        conn.close();
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "Error : Could not close Database " + e.getMessage());
    }
}
public void writeToDB()
{
    try
    {
        MAIN main = new MAIN();
        Statement st = conn.createStatement();
        String command1 = ("INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES" + drivID + FName + LName);
        String command2 = "INSERT INTO Offences(IDNumber, SpeedLimit, DriverSpeed, SeatBelt, DrunkenDriving, DriversLicense) VALUES" + drivID + intspeed + intDSpeed + strSeat + strDrunk + strLicense;
        String command3 = "INSERT INTO DriverPoints(IDNumber, Points) VALUES" + drivID + intpoints;
    }
}
public ResultSet select(String sql)
{
    try
    {
        Statement st = conn.createStatement();
        return st.executeQuery(sql);
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "Error: Could not read from database");
    }
    return null;
}
public int change (String sql)
{
    try
    {
        Statement st = conn.createStatement();
        return st.executeUpdate(sql);
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "Error: Could not Update Database");
    }
    return -1;
}
}

有人可以帮忙吗?

6 个答案:

答案 0 :(得分:2)

为主类中的变量声明变量public或创建Accessor Methods。您需要将主类实例传递给DBCONNECT类,以便引用它。

答案 1 :(得分:1)

让它们保持静止,这将完成你的工作。

答案 2 :(得分:1)

是否可以将这些变量设为公开和静态?然后,您可以通过使用Main类引用它们来使用它们。
例如:
Main.drivlD

答案 3 :(得分:1)

将所需的变量作为方法调用的参数传递非常容易。即你的writeToDB()方法将类似于writeToDB(String drivId,...)。

但是,如果您有其他逻辑,比如说您要验证drivId格式是否正确等等。那么您应该创建一个单独的类来保存要保存在数据库中的属性。因此,从文本小部件中,您将更新此对象,然后调用validate方法等,然后将其传递给数据库处理程序。这将从视图中隔离模型相关数据。

答案 4 :(得分:1)

将这两个类放在同一个文件夹中,并使用代码将它们放在同一个文件夹中。

package <package_name>;

然后你可以在主类中使用public和protected变量。

答案 5 :(得分:0)

执行此操作的常用方法是将每条信息传递给Main的dbconnect方法,或者创建一个保存数据的对象并将其传递给dbconnect方法。然后,您可以通过getter访问所需内容。您不应该直接从dbconnect引用Main,因为它会引入循环依赖。