Tag: jdbc

从多个线程读取相同的ResultSet

在数据库中,我有一个定义表,在启动时从应用程序中读取一次。 这个定义表很少改变,所以读取它一次并在每次更改时重新启动它都是有意义的。 但是,在读取表(放入ResultSet)之后,将由在其自己的线程中运行的多个处理程序读取它。 您如何建议完成此任务? 我的想法是填充CachedRowSet,然后在每次新请求到来时为每个处理程序创建此集合的副本(通过createCopy()方法)。 你认为这是明智的吗? 这提供了良好的表现吗? 谢谢。

ResultSetMetaData getScale返回0

我有一个名为RATE_HISTORY的表, RATE_HISTORY包含一个名为RATE的字段。 RATE字段的比例为18。 我正在使用ResultsetMetaData来获取Oracle 11.2上此表中列的元数据。 我在我的代码中执行以下查询: select (RATE * 100) from RATE_HISTORY 当我执行metadata.getScale() ,它返回0.但是,如果我执行此查询: select RATE from RATE_HISTORY getScale返回正确的值(18)。 有没有办法在oracle中增加两个数字并保持规模?

传递Date参数以创建日期范围查询

使用下面的代码,我想问一下如何传递来自文本字段的“日期”参数。 我打算使用DAO和servlet创建一个简单的日期范围查询。 我可以使用此代码显示所有列但是我想使用Date过滤… 这是我的代码: My Servlet package source; import java.io.*; import java.sql.SQLException; import java.util.*; import javax.servlet.ServletException; import javax.servlet.http.*; /** * * @author jaypee.martinez */ public class parseServlet extends HttpServlet { private parseDAO parseDAO; @Override public void init() throws ServletException { String driver = “org.postgresql.Driver”; String url = “jdbc:postgresql://localhost5432/mydb”; String username = “postgres”; String password = […]

使用JDBC驱动程序通过代理连接到MySQL

在Java中,我想从位于http代理后面的客户端计算机连接到Web服务器上的MySQL服务器。 我已经阅读了一些解决方案,有人说http隧道可能有效,有些人建议使用来自oracle的一个非常旧的链接 ,这个链接不再可用了。 所以问题是: 我们如何从http代理后面的计算机连接到MySQL服务器?

Hibernate与HSQLDB的连接

我在设置第一个Hibernate项目时遇到了问题。 我按照教程操作并在启动代码时卡住了。 当我开始与HSQLDB建立连接时,我认为程序会卡住。 它不提供任何错误消息。 控制台中的详细输出如下: 172 [main] INFO org.hibernate.annotations.common.Version – Hibernate Commons Annotations 3.2.0.Final 172 [main] INFO org.hibernate.cfg.Environment – Hibernate 3.6.10.Final 172 [main] INFO org.hibernate.cfg.Environment – hibernate.properties not found 187 [main] INFO org.hibernate.cfg.Environment – Bytecode provider name : javassist 187 [main] INFO org.hibernate.cfg.Environment – using JDK 1.4 java.sql.Timestamp handling 265 [main] INFO org.hibernate.cfg.Configuration – configuring […]

如何只使用一个连接在hibernate中执行嵌套事务?

问题的上下文我想解决:我有一个java spring http拦截器AuditHttpCommunicationInterceptor,用于审核与外部系统的通信。 执行通信的HttpClieant在java服务类中使用,该服务类执行一些名为DoBusinessLogicSevice的业务逻辑。 DoBusinessLogicSevice打开一个新的事务,并使用几个协作者完成大量的事情。 要解决的问题:无论DoBusinessLogicSevice中的任何操作的结果如何(意外的exception等),我都希望AuditHttpCommunicationInterceptor将审计存储在数据库中。 我使用的解决方案:AuditHttpCommunicationInterceptor将以这种方式打开一个新事务: TransactionDefinition transactionDefinition = new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRES_NEW); new TransactionTemplate(platformTransactionManager, transactionDefinition).execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { // do stuff } }); 一切正常。 当DoBusinessLogicSevice的一部分抛出意外exception时,其事务将被回滚,但AuditHttpCommunicationInterceptor会将审计存储在数据库中。 此解决方案产生的问题:AuditHttpCommunicationInterceptor使用新的数据库连接。 因此,对于每个DoBusinessLogicSevice调用,我需要2个db连接。 基本上,我想知道问题的解决方案:在这种情况下,如何使TransactionTemplate“挂起”当前事务并重新使用新连接。 有任何想法吗? 🙂 PS一个想法可能是采用不同的设计方法:删除拦截器并创建一个直接在DoBusinessLogicSevice中使用的AuditingHttpClient(不是由spring调用)但我不能这样做,因为我无法访问那里的所有http字段。

无法在SQL Server上使用Java和JDBC执行存储过程

我一直在尝试通过JDBC执行MS SQL Server存储过程,到目前为止一直没有成功。 存储过程有1个输入和1个输出参数。 我在代码中设置存储过程调用时使用的每个组合都会收到一条错误,指出无法找到存储过程。 我已经提供了我正在执行的存储过程(注意:这是供应商代码,所以我无法更改它)。 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER PROC [dbo].[spWCoTaskIdGen] @OutIdentifier int OUTPUT AS BEGIN DECLARE @HoldPolicyId int DECLARE @PolicyId char(14) IF NOT EXISTS ( SELECT * FROM UniqueIdentifierGen (UPDLOCK) ) INSERT INTO UniqueIdentifierGen VALUES (0) UPDATE UniqueIdentifierGen SET CurIdentifier = CurIdentifier + 1 SELECT @OutIdentifier = (SELECT CurIdentifier […]

在eclipse中解决sql server 2008 r2与java之间的连接错误

我正在尝试使用eclipse IDE中的microsoft JDBC sqljdbc_4.0驱动程序将SQL Server 2008 r2与我的java应用程序连接,我在Java和sql server 2008之间使用JDBC连接几次,我尝试了一些但是得到了相同的错误消息,所以最后我决定把这个问题放在这里,错误信息是什么,我可以知道我在做什么错? 我跟着一个链接 ! 用于连接SQL Server和Java的链接。 我的java程序: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Connect { public static void main(String[] args) throws Exception { String userName = “Abhishek”; String password = “abhishek-nayak”; String url = “jdbc:sqlserver://Abhishek-VAIO\\MSSQLSERVER;databaseName=master;integratedSecurity=true”; try { Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”); Connection conn = DriverManager.getConnection(url,userName,password); System.out.println(“Connected”); } catch(SQLException e) […]

Glassfish jdbc /数据库查找失败

我希望我不是因为我无法找到答案而问一个重复的问题。 我收到此错误: javax.naming.NamingException:SerialContext中的’jdbc / osclassDB’查找失败 这就是我所做的:我设置了一个JDBC连接池和一个指向该池的JDBC资源 (都在Glassfish中)。 然后我告诉我的web.xml有一个JDBC资源: jdbc/osclassDB javax.sql.DataSource Container Shareable 然后我尝试在Servlet中使用该资源: Connection connection = null; try { InitialContext initialContext = new InitialContext(); //Context dbContext = (Context) initialContext.lookup(“java:comp/env”); DataSource dataSource = (DataSource) initialContext.lookup(“jdbc/osclassDB”); connection = dataSource.getConnection(); if (connection == null) { throw new SQLException(“Error establishing connection!”); } // some queries here } // catch […]

JDBC连接关闭与中止

我问了这个问题( 如何调用java.sql.Connection :: abort? ),这引出了另一个问题。 同 java.sql.Connection conn = … ; 有什么区别 conn.close(); 和 conn.abort(…); ?