悖论数据库的java更新查询

Posted

技术标签:

【中文标题】悖论数据库的java更新查询【英文标题】:java update query for paradox database 【发布时间】:2013-01-19 01:29:51 【问题描述】:

我正在尝试从 java 更新 paradox 表,但出现异常

java.sql.SQLException:[Microsoft][ODBC Paradox Driver] 操作必须使用可更新查询。 java.sql.SQLException: [Microsoft][ODBC Paradox Driver] 操作必须使用可更新查询。 java.sql.SQLException: [Microsoft][ODBC Paradox Driver] 操作必须使用可更新查询。

我正在使用此代码:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)                                          
    try 
        Connection paradoxCon = paradox.createConnection();
        Results res = new Results();
        res.getAll();
        if (res.allRes.isEmpty()) 
            JOptionPane.showMessageDialog(mainPanel, "There are no Finished or Postponed Games!", "Error", JOptionPane.ERROR_MESSAGE);
         else 
            int y = res.allRes.size();
            for (int x = 0; x < y; x = x + 1) 
                try 
                    if (res.getAll().get(x).Reversed == 0) 
                        if (res.getAll().get(x).Status.equals("Fin")) 
                            String sql = "UPDATE Kvote SET _45_d = '" + res.getAll().get(x).HThome + "', _45_g = '" + res.getAll().get(x).HTaway + "', _90_d= '" + res.getAll().get(x).FThome + "', _90_g = '" + res.getAll().get(x).FTaway + "', Ok='Y' WHERE Kolo = '" + res.getAll().get(x).tRound + "' AND Sifra='" + res.getAll().get(x).TID + "'";
                            PreparedStatement ps = paradoxCon.prepareStatement(sql);
                            ps.executeUpdate();
                        
                        if (res.getAll().get(x).Status.equals("Post")) 
                            String sql = "UPDATE Kvote SET _45_d = '" + res.getAll().get(x).HThome + "', _45_g = '" + res.getAll().get(x).HTaway + "', _90_d= '" + res.getAll().get(x).FThome + "', _90_g = '" + res.getAll().get(x).FTaway + "', Ok='O' WHERE Kolo = '" + res.getAll().get(x).tRound + "' AND Sifra='" + res.getAll().get(x).TID + "'";
                            PreparedStatement ps = paradoxCon.prepareStatement(sql);
                            ps.executeUpdate();
                        
                    
                    if (res.getAll().get(x).Reversed == 1) 
                        if (res.getAll().get(x).Status.equals("Fin")) 
                            String sql = "UPDATE Kvote SET _45_d = '" + res.getAll().get(x).HTaway + "', _45_g = '" + res.getAll().get(x).HThome + "', _90_d= '" + res.getAll().get(x).FTaway + "', _90_g = '" + res.getAll().get(x).FThome + "', Ok='Y' WHERE Kolo = '" + res.getAll().get(x).tRound + "' AND Sifra='" + res.getAll().get(x).TID + "'";
                            PreparedStatement ps = paradoxCon.prepareStatement(sql);
                            ps.executeUpdate();
                        
                        if (res.getAll().get(x).Status.equals("Post")) 
                            String sql = "UPDATE Kvote SET _45_d = '" + res.getAll().get(x).HTaway + "', _45_g = '" + res.getAll().get(x).HThome + "', _90_d= '" + res.getAll().get(x).FTaway + "', _90_g = '" + res.getAll().get(x).FThome + "', Ok='O' WHERE Kolo = '" + res.getAll().get(x).tRound + "' AND Sifra='" + res.getAll().get(x).TID + "'";
                            PreparedStatement ps = paradoxCon.prepareStatement(sql);
                            ps.executeUpdate();
                        
                    
                 catch (Exception ex) 
                    System.out.println(ex);
                
            
        
        res.getAll().clear();
     catch (ParseException ex) 
        Logger.getLogger(AutoResultsImporterView.class.getName()).log(Level.SEVERE, null, ex);
    

【问题讨论】:

嗨,欢迎来到 SO!如果可能的话,还请告诉我们它发生在哪条线路上。你能在调试器中看到吗? 我正在尝试仅使用一个没有 if 和 for 块的 sql 查询来更新表,我得到了同样的结果 我使用 INTERSOLV 3.11 32-BIT ParadoxFile (*.db) 驱动程序解决了这个问题 太棒了!您是否知道您可以回答自己的问题并接受它作为 答案。这被认为是一种很好的做法,因为它可以帮助寻找答案的人看到答案,并帮助他们找到答案。如果答案仅在 cmets 中,则问题将显示为未回答。 【参考方案1】:

我使用 INTERSOLV 3.11 32-BIT ParadoxFile (*.db) 驱动程序解决了这个问题 我使用这个驱动程序创建了一个系统 DSN 数据源并连接到这个数据源

【讨论】:

以上是关于悖论数据库的java更新查询的主要内容,如果未能解决你的问题,请参考以下文章

悖论:查询日期列 + 时间列作为日期时间

在运行时更新悖论表

Redux Toolkit linting 悖论

pxlib - 如何使用 where 子句进行查询?

用Java模拟芝诺悖论的程序

我正在尝试使用悖论视图打开一个悖论数据库(* .db 文件),我收到消息(“网络初始化失败。权限被拒绝。