当前位置: 代码迷 >> java >> SQLite触发器事件不起作用
  详细解决方案

SQLite触发器事件不起作用

热度:51   发布时间:2023-07-26 14:48:44.0

当我将触发器代码添加到程序中时,我的触发器代码不起作用,它给出了错误并且无法连接到数据库。

我怀疑以下代码是造成此问题的原因,因为在添加触发器查询之前,其他插入查询工作正常。

public class Connect_db {

    Connection con;
    public static Statement st = null;

    public static Connection connectdb(){
       try{

           Class.forName("org.sqlite.JDBC");
           Connection con= DriverManager.getConnection("jdbc:sqlite:eGiftCard.db","","");
           st=con.createStatement();
           st.executeUpdate("CREATE TABLE IF NOT EXISTS SetUpReward(Number INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \n"
                   + "min_Value DOUBLE (18, 2), \n"
                   + "max_Value DOUBLE (18, 2), \n"
                   + "reward_Point FLOAT, \n"
                   + "card_Length INTEGER, \n"
                   + "PayPal_Email TEXT, \n"
                   + "Bank_Name TEXT, \n"
                   + "Bank_Account TEXT)");

}

我收到以下错误。

java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database ()
    at org.sqlite.DB.newSQLException(DB.java:374)
    at org.sqlite.DB.throwex(DB.java:369)
    at org.sqlite.NestedDB._exec(NestedDB.java:156)
    at org.sqlite.Stmt.executeUpdate(Stmt.java:132)
    at database_files.Connect_db.connectdb(Connect_db.java:56)
    at view_controller.IGisftCardController.initialize(IGisftCardController.java:230
CREATE TRIGGER IF NOT EXISTS eGiftCard.audit_log ...
INSERT INTO eGiftCard.ActivateAudit ...

数据库名称不是eGiftCard而是main 该数据库名是一样的文件名。

这里没有理由使用数据库名称。 只需删除eGiftCard.

此外,触发器的END; 不见了。

  相关解决方案