好吧,我有点困在我要问的地方
我有两个名为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;
}
}
有人可以帮忙吗?
答案 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,因为它会引入循环依赖。