使用另一个类java.language.String中的方法

使用另一个类java.language.String中的方法,java,ms-access,methods,Java,Ms Access,Methods,我有两门课: MAIN和DBCONNECT DBCONNECT包含所有编码,包括连接、插入和更新数据库/表的方法 MAIN是创建GUI并使用DBCONNECT类的地方 在我的DBCONNECT类中,我创建了一个将输入信息写入表的方法 String sqlInsert1 = "INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES " + Id +"," + FirstName+"," + Surname; String sqlInse

我有两门课:

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");
        }
    }
在我的主类中,我想在单击保存按钮时使用此方法

public void actionPerformed(ActionEvent ae)
{
    if (ae.equals(save))
    {
        database.writeToDB();
    }
}
它总是给我一个错误

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

请让我知道我做错了什么。

你需要这样写:

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
方法中声明为参数的变量不同


看看这个问题,了解你需要这样写的内容:

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
方法中声明为参数的变量不同

看看这个问题,从我的理解中了解问题的答案

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

而不是这个

   database.writeToDB();
应该这样使用,使用这些变量并在actionPerformed()中进行初始化

此外,在insert语句中,您还缺少值后面的括号

例如:

   sqlINsert1="INSERT INTO Tablename(ID, StreetName, City)Values(,))";
据我了解

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

而不是这个

   database.writeToDB();
应该这样使用,使用这些变量并在actionPerformed()中进行初始化

此外,在insert语句中,您还缺少值后面的括号

例如:

   sqlINsert1="INSERT INTO Tablename(ID, StreetName, City)Values(,))";

它是
java.lang.String
如果您将字符串作为字段,则不需要将其作为参数传递,也不需要传递任何内容。@Thanga这意味着您试图调用一个只接受一个参数的方法,但您没有给它一个参数。你需要计算出你应该传递什么值。@PeterLawrey yes同意。。Jaun的查询上面也出现了同样的情况,database.writetoDB()使用空参数调用函数,并且定义有3个参数,那么如果没有out参数怎么可能呢?我可能错了:)@Thanga如果这个方法没有参数,你可以不用args来做。如果值总是相同的,则不需要将其作为参数传递。它是
java.lang.String
如果将字符串作为字段传递,则不需要将其作为参数传递,也不需要传递任何内容。@Thanga这意味着您正试图调用一个只接受一个参数的方法,但您没有给它一个参数。你需要计算出你应该传递什么值。@PeterLawrey yes同意。。Jaun的查询上面也出现了同样的情况,database.writetoDB()使用空参数调用函数,并且定义有3个参数,那么如果没有out参数怎么可能呢?我可能错了:)@Thanga如果这个方法没有参数,你可以不用args来做。如果值始终相同,则不需要将其作为参数传递。