使用另一个类java.language.String中的方法
我有两门课: MAIN和DBCONNECT DBCONNECT包含所有编码,包括连接、插入和更新数据库/表的方法 MAIN是创建GUI并使用DBCONNECT类的地方 在我的DBCONNECT类中,我创建了一个将输入信息写入表的方法使用另一个类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
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来做。如果值始终相同,则不需要将其作为参数传递。