java - SQL 准备语句和返回类型

标签 java mysql jdbc statements

我刚刚在我的类文件中创建了一个方法,将数据插入到我的 SQL 数据库中。

1) 这些准备好的陈述是否正确? 2)我需要为该方法返回一个类型的汽车(在哪里可以完成)? .....因为我现在得到的错误是该方法必须返回 Car 类型(Car 是类文件的名称)

public Car addVehicle(String aLicense, int aJourneys, String aUsername, String aPassword) {
    Car c = new Car();
    try {

        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url + dbName, userName, password);
        statement = conn.createStatement();
        String query = " insert into eflow.registration (cLicense, cJourneys, cUsername, cPassword)"
                + " values (?, ?, ?, ?)";

        PreparedStatement preparedStmt = conn.prepareStatement(query);
        preparedStmt.setString(1, aLicense);
        preparedStmt.setInt(2, aJourneys);
        preparedStmt.setString(3, aUsername);
        preparedStmt.setString(4, aPassword);

        preparedStmt.execute();

        conn.close();

    } catch (Exception e) {
        System.err.println("Got an exception!");
        System.err.println(e.getMessage());

    }
    return c;

}

调用该方法会返回错误,表明该方法不适用于参数

//int addingID = Integer.parseInt(enteringID.getText());
                String addingReg = enteringReg.getText();
                int addingJourneys = Integer.parseInt(enteringJourneys.getText());
                String addingUsername = enteringUsername.getText();
                @SuppressWarnings("deprecation")
                String addingPassword = enteringPassword.getText();
                Car newCar = new Car(addingReg, addingJourneys, addingUsername, addingPassword);
                int addStatus = myCar.addVehicle(newCar);
                if (addStatus == 1) {
                    JOptionPane.showMessageDialog(null, "Vehicle Added");
                    enteringID.setText("(eg. 1-999)");
                    enteringReg.setText("(eg. - 162-MH-749)");
                    enteringJourneys.setText("(eg. 7)");
                    enteringUsername.setText("(eg. - username@domain.com)");
                    enteringPassword.setText("");
                }

                else {
                    JOptionPane.showMessageDialog(null, "Error, Please Try Again");
                }
            } catch (Exception f) {
                JOptionPane.showMessageDialog(null, "Error, Please Try Again");
            }
        }
    });

最佳答案

这不是您问题的最终答案,纯粹是为了澄清我的评论。

如果您希望方法返回 Car 对象,则必须创建 Car 类的实例并返回它:

public Car addVehicle(String aLicense, int aJourneys, String aUsername, String aPassword) {
try {        
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection(url + dbName, userName, password);
    statement = conn.createStatement();
    String query = " insert into eflow.registration (cLicense, cJourneys, cUsername, cPassword)"
            + " values (?, ?, ?, ?)";

    PreparedStatement preparedStmt = conn.prepareStatement(query);
    preparedStmt.setString(1, "'" + aLicense + "'");
    preparedStmt.setInt(2, aJourneys);
    preparedStmt.setString(3, "'" + aUsername + "'");
    preparedStmt.setString(4, "'" + aPassword + "'");

    preparedStmt.execute();

    conn.close();

    Car c = new Car();
    //Do anything with the car object that you like.
    //for example: c.setColor("blue");
    return c;

} catch (Exception e) {
    System.err.println("Got an exception!");
    System.err.println(e.getMessage());
    //kayaman is correct here: we still need to return something here in order to be able to compile
    return null;
}

关于java - SQL 准备语句和返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43141392/

相关文章:

java - json 对象中的 put 方法将值添加到 jsonobject 的第一个;

postgresql - 无法远程访问 postgresql 数据库服务器

java - 打印 ResultSet 中的数据以及列名

java - 使用小程序连接到远程数据库(MSSqlserver)

java - 具有快速查找功能的排序集(与 HashSet 一样快?)

java - 如何自动检索任意jar的依赖关系?

mysql - 如何复制MySQL数据库+包含存储过程(例程)

mysql - Fusion Table 与 google 电子表格同步

php - 迁移 PHP 5.2 网站

Java根据数组列表中的项目计算百分比