通过 JAVA.JDBC 在 MySQL 中创建 "Event"

Creating a "Event" in MySQL throu JAVA.JDBC

您好,我在通过 JAVA.JDBC 创建 MySQL "Event" 时遇到问题。这是代码:

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) 以防它抱怨想要日期格式的值而不是字符串,但这没有帮助。似乎失败的那一刻?被介绍。所以我想知道我做错了什么,除了使用 stm2 变体之外是否还有其他解决方法,因为我怀疑它 SQL 安全。

我认为事件名称不能设置为 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 = ?",

Always remember when you think you are having sql problem print the query in console and copy the query and run it in your database gui then you can check whats wrong with the query.