为什么我的主类不运行我调用的方法?

时间:2016-06-14 12:05:56

标签: java mysql jdbc dao

我有一个问题:我正在尝试使用jdbc for mysql在java中进行插入查询。我认为我的代码是正确的,但不知怎的,我无法运行我在主类中调用的方法。这是我的方法,我想调用代码:

public void wijzigAfspraak() {
    try {
        Statement stmt2 = conn.createStatement();
        String query2 = "";
        rs = stmt2.executeQuery(query2);
        System.out.println("query uitgevoerd");

        while (rs.next()){
            String titel = rs.getString(1);
            String datum = rs.getString(2);
            int urgentie = rs.getInt(3);
            String beschrijving = rs.getString(4);
            System.out.println(titel+datum+urgentie+beschrijving);
    }
    }
    catch (SQLException e){
        e.printStackTrace();
    }

}

这是我的主要课程:

public class Main {
public static void main(String[] args){

AfspraakDaoImpl adi = new AfspraakDaoImpl();
Afspraak afs = new Afspraak("","",1,"");
afs.setTitel("hond");
afs.setAfspraakDatum("12juni");
afs.setUrgentie(123);
afs.setBeschrijving("test");
adi.voegAfspraakToe();

adi.wijzigAfspraak();

}

我的控制台没有打印任何内容,我的数据库显示数据没有差异,这意味着它没有正常工作?

提前致谢!

3 个答案:

答案 0 :(得分:3)

看起来你在这里执行空SQL查询:

String query2 = "";
rs = stmt2.executeQuery(query2);

如果要执行INSERT语句,则应在语句对象executeUpdate()上调用stmt2方法,并将SQL字符串作为参数传递。

此外,请考虑使用PreparedStatement代替Statement,如下所示:

String sql = "INSERT INTO foo(value) VALUES(?)";
try (PreparedStatement ps = connection.prepareStatement(sql)) {
    ps.setString(1, "bar");
    ps.executeUpdate();
} catch (SQLException e) {
    // handle error
}

还有一件事。看起来您将ResultSet rs保留为类字段。不要这样做,尽量减少类的可变状态变量的数量,尽量保持组件的轻量级和无状态。最好将StatementResultSet保留在try-with-resources块中。

答案 1 :(得分:0)

由于您正在使用DAO并使用MYSQL数据库(此处未指定;)):

public void wijzigAfspraak(String 1, String 2, String 3, etc..) {
try {
    Statement stmt2 = conn.createStatement();
    String query2 = "insert into afspraken (column_1, column_2, etc...)    values ( String 1, String 2, etc..)"; --> these values come from the wijzigafspraak(String 1, String 2, etc..)
    stm2.executeUpdate(query2);
    System.out.println("query is inserted correctly");

你不想使用rs.next(),它用于" SELECT-STATEMENT",你没有收到数据,但是你插入它。

然后,你的主要课程:

public class Main {
public static void main(String[] args){

AfspraakDaoImpl adi = new AfspraakDaoImpl();
Afspraak afs = new Afspraak("","",1,"");
afs.setTitel("hond");
afs.setAfspraakDatum("12juni");
afs.setUrgentie(123);
afs.setBeschrijving("test");
//adi.voegAfspraakToe();//this is not specified?? and probably does not work either

adi.wijzigAfspraak(afs.getTitel(), afs.getAfspraakDatum(), etc..);

答案 2 :(得分:0)

你的sql语句在哪里?它应该是:

String query2 = "select titel,datum,urgentie,beschrijving from Afspraak";