通过JAVA.JDBC在MySQL中创建“事件”

时间:2015-02-11 17:22:40

标签: java mysql jdbc

您好我在创建MySQL"事件"通过JAVA.JDBC。这是代码:

public void skapaAuktionsEvent(String produktnamn, String slutdatum) throws SQLException{

    String sql = "CREATE EVENT "+ produktnamn +" ON SCHEDULE AT '"+ slutdatum +"' DO UPDATE Auktion SET AvslutadAuktion = 1 WHERE produktnamn = "+ produktnamn;

    System.out.println("Skapar event");


    PreparedStatement stm = conn.prepareStatement("CREATE EVENT ? ON SCHEDULE AT ? DO UPDATE Auktion SET AvslutadAuktion = 1 WHERE produktnamn = ?",
            ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    stm.setString(1, produktnamn);
    stm.setString(2, slutdatum);
    stm.setString(3, produktnamn);

    PreparedStatement stm2 = conn.prepareStatement(sql,
            ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

    PreparedStatement stm3 = conn.prepareStatement("CREATE EVENT TestProdukt ON SCHEDULE AT '2015-02-15 15:15:00' DO UPDATE Auktion SET AvslutadAuktion = 1 WHERE produktnamn = TestProdukt",
            ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);


    stm.execute();
    System.out.println("Skapat Skiten");

    stm.close();
}

所以我得到了" stm2"和" stm3"工作,但出于某种原因,当我尝试使用使用.setString的stm时,它都会变得很复杂。

我已经尝试删除stm.setString(2,slutdatum),以防它想要一个Date格式化值而不是字符串,但这没有帮助。这一刻似乎失败了?得到介绍。所以我想知道我做错了什么,如果除了使用stm2变种之外还有另一种解决方法,因为我怀疑它是否安全。

1 个答案:

答案 0 :(得分:2)

我认为事件名称不能设置为parameter.Do

String eventName="myEventName";//set event name
PreparedStatement stm = conn.prepareStatement("CREATE EVENT "+eventName+" ON SCHEDULE AT ? DO UPDATE Auktion SET AvslutadAuktion = 1 WHERE produktnamn = ?",
  

永远记住,当你认为你有SQL问题打印时   在控制台中查询并复制查询并在您的数据库gui中运行它   那么你可以查看查询的错误。