0

我有两个课程:

MAINDBCONNECT

DBCONNECT具有所有编码,包括连接、插入和更新数据库/表的方法。

MAIN是创建我的 GUI 并使用 DBCONNECT 类的地方。

在我的 DBCONNECT 类中,我创建了一个将输入信息写入表的方法。

String sqlInsert1 = "INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES " + Id +"," + FirstName+"," + Surname;
String sqlInsert2 = "INSERT INTO Offences(IDNumber, SpeedLimit, DriverSpeed, SeatBelt, DrunkenDriving, DriversLicense) VALUES" + Id + SpeedLimit + DriversSpeed + Seatbelt + DrunkenDriving + License;
String sqlInsert3 = "INSERT INTO DriverPoints(IDNumber, Points) VALUES" + Id + Points;

 public void writeToDB(String sqlInsert1, String sqlInsert2, String sqlInsert3)
    {
        try
        {
            Statement st = conn.createStatement();
            st.executeUpdate(sqlInsert1);
            st.executeUpdate(sqlInsert2);
            st.executeUpdate(sqlInsert3);
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, "Error: Could not read from database");
        }
    }

在我的 MAIN 类中,我想在单击Save按钮时使用此方法

public void actionPerformed(ActionEvent ae)
{
    if (ae.equals(save))
    {
        database.writeToDB();
    }
}

它一直给我一个错误

required:java.language.String,java.language.String,java.language.String

请让我知道我在这里做错了什么。

4

2 回答 2

3

你需要这样写:

public void actionPerformed(ActionEvent ae)
{
    if (ae.equals(save))
    {
        String sqlInsert1 = "INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES " + Id +"," + FirstName+"," + Surname;
        String sqlInsert2 = "INSERT INTO Offences(IDNumber, SpeedLimit, DriverSpeed, SeatBelt, DrunkenDriving, DriversLicense) VALUES" + Id + SpeedLimit + DriversSpeed + Seatbelt + DrunkenDriving + License;
        String sqlInsert3 = "INSERT INTO DriverPoints(IDNumber, Points) VALUES" + Id + Points;

        database.writeToDB(sqlInsert1,sqlInsert2,sqlInsert3);
    }

这是因为您的方法writeToDB接受三个String参数,并且在代码中调用它时没有提供任何参数。

并且您在writeToDb方法之前创建的字符串变量与在方法中声明为参数的变量不同writeToDB

看这个问题就知道参数和参数的区别

于 2012-11-01T10:23:09.707 回答
0

据我了解

没有确切的函数调用 writeToDB(); 因为writeToDB()是用参数定义的,但在函数调用中使用了空参数。

而不是这个

   database.writeToDB();

应该使用类似这样的东西,使用这些变量并在 actionPerformed() 中初始化

   database..writeToDB(sqlInsert1,sqlInsert2,sqlInsert3);

您还错过了值后插入语句中的括号

例子:

   sqlINsert1="INSERT INTO Tablename(ID, StreetName, City)Values(,))";
于 2012-11-01T10:25:39.423 回答