悖论数据库的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更新查询的主要内容,如果未能解决你的问题,请参考以下文章