我有一个问题:我正在尝试使用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();
}
我的控制台没有打印任何内容,我的数据库显示数据没有差异,这意味着它没有正常工作?
提前致谢!
答案 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
保留为类字段。不要这样做,尽量减少类的可变状态变量的数量,尽量保持组件的轻量级和无状态。最好将Statement
和ResultSet
保留在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";