我有两节课:
MAIN 和 DBCONNECT
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课程中,我想在点击 保存 按钮时使用此方法
public void actionPerformed(ActionEvent ae)
{
if (ae.equals(save))
{
database.writeToDB();
}
}
它一直给我一个错误
required:java.language.String,java.language.String,java.language.String
请告诉我这里的错误。
答案 0 :(得分: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
方法中声明为参数的变量不同。
答案 1 :(得分:0)
从我的理解
没有确切的函数调用writeToDB();因为writeToDB()
是用参数定义的,但是在函数调用中使用了空参数。
而不是这个
database.writeToDB();
应该使用这样的东西,使用这些变量并在actionPerformed()
中初始化 database..writeToDB(sqlInsert1,sqlInsert2,sqlInsert3);
你也错过了值
之后的insert语句中的括号示例:
sqlINsert1="INSERT INTO Tablename(ID, StreetName, City)Values(,))";