Tag: sql

当我尝试执行此JDBC查询时,为什么我获得此“SQLSyntaxErrorException:ORA-00933:SQL命令未正确结束”?

尝试在Java应用程序中实现简单的JDBC查询时遇到一些问题。 所以我有以下查询: SELECT D.* FROM coda_tx c, documenti_tx d WHERE C.FK_TIPO_DOC = 99 AND C.FK_STATO = 1 AND C.FK_PIVA_MITTENTE = ‘05779711000’ AND C.PK_CODA = D.PFK_CODA AND C.CANALE=’STA’ 如果我将它运行到Oracle SQL Developer中,它运行良好,我获得了2条记录。 所以我必须将这个查询实现到我的应用程序的DAO类中,其中我定义了以下方法: public void getListaFatturePDF(String partitaIva) { System.out.println(“INTO ottieniListaFatturePDF()”); Blob blobPdf; String sql; StringBuffer sb = new StringBuffer(); sb.append(“SELECT D.*”); sb.append(“FROM coda_tx c, documenti_tx d”); sb.append(“WHERE […]

JDBC使用MySQL选择批处理/获取大小

我有一个使用JDBC的Java应用程序,它每天在我的服务器上运行一次,并与同样在同一服务器上运行的MySQL数据库(v5.5)进行交互。 该应用程序正在查询并迭代表中的所有行。 该表目前相当小(约5000行),但将继续无限增长。 我的服务器内存是有限的,我不喜欢应用程序的内存消耗不确定的想法。 如果我在运行查询之前使用statement.setFetchSize(n) ,那么我不清楚这里发生了什么。 例如,如果我使用类似的东西: PreparedStatement query = db.prepareStatement(“SELECT x, y FROM z”); query.setFetchSize(n); ResultSet result = query.executeQuery(); while ( result.next() ){ … } 这是如何适当控制潜在的大型选择查询? 这里发生了什么事? 如果n是1000,那么MySQL一次只能将1000行拉入内存(知道它停在哪里),然后每次需要时抓取下一行(或多行)? 编辑: 我现在很清楚,设置提取大小对我没用。 请记住,我的应用程序和MySQL服务器都在同一台机器上运行。 如果MySQL将整个查询结果提取到内存中,那么它也会影响应用程序,因为它们共享相同的物理内存。

找不到JDBC Derby驱动程序

我遵循了JDBC教程: http : //docs.oracle.com/javase/tutorial/jdbc/basics/gettingstarted.html ,并设法构建和创建我自己的JDBC数据库,而不用太大惊小怪。 但是现在当尝试从java应用程序连接到数据库时,我收到了exception: java.sql.SQLException:找不到适合jdbc:derby: db目录的驱动程序 然后在尝试使用以下方法手动指定JDBC驱动程序时: Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”); 我收到以下exception错误: java.lang.ClassNotFoundException:org.apache.derby.jdbc.EmbeddedDriver 我很肯定该驱动程序应该没有加载问题,因为这是教程中指定的驱动程序,并且使用该驱动程序创建数据库没有问题。 我在事件尝试在连接语句的末尾添加属性“; create = true”以尝试创建一个全新的数据库,但我仍然收到相同的exception错误。 请参阅下面的应用程序代码。 任何帮助都会很棒:)。 package com.ddg; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class SQLConnect { Connection Conn = null; String URL; String Username; String Password; public SQLConnect() { try { Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”); } catch (ClassNotFoundException e) { System.out.println(e.toString()); } URL […]

如何在jdbc MySQL查询中处理0000-00-00日期

我得到了这个例外: java.sql.SQLException: Value ‘0000-00-00’ can not be represented as java.sql.Date 源自此代码: Date internalDate = rs.getDate(idx++); 其中rs是ResultSet 。 所以对我来说这很好 – 我知道数据库中有零日期,我需要能够读取它们并将它们转换为我的下游数据结构中的适当(可能为空)数据。 问题是我不知道如何检索它并得到“软”错误。 我想在SQLException的try / catch中包装这一行但是理解这会破坏ResultSet的有效性。 是否可以在不抛出SQLException的情况下以其他方式读取此值?

Jdbi – 如何在Java中绑定list参数?

我们有一个由Jdbi( org.skife.jdbi.v2 )执行的SQL语句。 对于绑定参数,我们使用Jdbi的bind方法: Handle handle = … Query<Map> sqlQuery = handle.createQuery(query); sqlQuery.bind(…) 但是我们在列表中遇到问题,目前我们正在使用String.format 。 所以我们的查询看起来像这样: SELECT DISTINCT tableOne.columnOne, tableTwo.columnTwo, tableTwo.columnThree FROM tableOne JOIN tableTwo ON tableOne.columnOne = tableTwo.columnOne WHERE tableTwo.columnTwo = :parameterOne AND tableTwo.columnThree IN (%s) %s被String.format替换,所以我们必须在java代码中生成一个正确的字符串。 然后在替换所有%s ,我们使用jdbi的bind方法替换所有其他参数( :parameterOne或? )。 有没有办法用jdbi替换String.format ? 有一个方法bind(String, Object)但默认情况下它不处理列表/数组。 我发现这篇文章解释了如何编写我们自己的工厂来绑定自定义对象,但它看起来很费劲,特别是对于应该已经支持的东西。

如何使用Session Factory从Java Hibernate执行sql存储过程?

我无法使用会话工厂从java hibernate调用我的存储过程 我编写了一个sql过程,它接受5个参数并返回一个在MS SQL studio中正常工作的结果集 EXEC SlaGrid @appID=245,@fromYear=2012,@toYear=2013,@fromMon=1,@toMon=12 — sql EXEC SlaGrid @applID=:applID,@fromYear=:fromYear,@toYear=:toYear,@fromMon=:fromMon,@toMon=:toMon –hibernate 我正在设置上述查询的参数 String queryString = “EXEC SlaGrid @applID=:applID,@fromYear=:fromYear,@toYear=:toYear,@fromMon=:fromMon,@toMon=:toMon” Query query = sessionFactory.getCurrentSession().createSQLQuery(queryString); //set query parameters here query.list() — giving sql grammer exception

如何在JTable中添加JCheckBox?

首先,我为我的英语疏忽道歉,我将解释我的所有问题。 首先,我想要JTable中的JCheckBox。 我正在从索引0和1列中的数据库中检索学生ID和学生姓名。我希望第三列应该是缺席/现在,这将最初取决于学生是否存在JCheckbox Value。 这里是JTable值的代码: Attendance.java /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package shreesai; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Vector; /** * * @author Admin */ public class Attendance{ Connection con = Connectdatabase.ConnecrDb(); public Vector getEmployee()throws Exception { Vector<Vector> employeeVector […]

MERGE是SQL2008中的primefaces语句吗?

我使用MERGE语句作为UPSERT来添加新记录或更新当前记录。 我有多个线程通过多个连接和多个语句驱动数据库(每个线程一个连接和语句)。 我一次批处理语句50。 在测试过程中,我很惊讶地发现duplicate key违规。 我希望这是不可能的,因为MERGE将作为单个交易执行,或者是它? 我的Java代码如下: private void addBatch(Columns columns) throws SQLException { try { // Set parameters. for (int i = 0; i = MaxBatched) { statement.executeBatch(); batched = 0; } } catch (SQLException e) { log.warning(“addBatch failed ” + sql + ” thread ” + Thread.currentThread().getName(), e); throw e; } } 查询如下所示: […]

向/从SQL数据库(例如H2)插入和获取java.time.LocalDate对象

如何通过JDBC将诸如LocalDate类的java.time类型插入到SQL数据库(如H2数据库引擎)中 ? 使用PreparedStatement::setDate和ResultSet::getDate的旧方法适用于旧的java.sql.Date类型。 我想避免使用这些麻烦的旧日期时间类。 通过JDBC驱动程序发送java.time类型的现代方法是什么?

@ManyToMany没有连接表(旧数据库)

我必须在遗留数据库中应用JPA,设计很糟糕。 不幸的是不可能改变它。 幸运的是只能进行只读访问。 我找到的一个最奇怪的事情是没有连接(或中间)表的“多对多”关系。 这是表结构的简化: USER ACCESS —- —— ID int primary key ID int primary key NAME varchar2(20) NAME varchar2(20) ACCESS_GROUP int ACCESS_GROUP int 可以在两个表中重复ACCESS_GROUP列 一个USER可以与N ACCESS相关 一个ACCESS可以与N USER相关 “从概念上讲”这些表必须以这种方式与Java类映射: public class User { private Integer id; private String name; @ManyToMany private List accessList; } public class Access { private Integer id; private String […]