Tag: jdbc

ResultSet.getTimestamp(“date”)vs ResultSet.getTimestamp(“date”,Calendar.getInstance(tz))

java.util.Date , java.util.Timetamp似乎对很多人造成了很大的困惑。 在StackOverflow中有很多问题,不幸的是我的问题有点扭曲。 有两个JDBC api。 他们应该如何表现? RDBMS之间是否存在任何一致性? ResultSet.getTimestamp(“dateColumn”) ResultSet.getTimestamp(“dateColumn”, Calendar.getInstance(tz)) 如果有人对Sybase有所了解,请您分享一下您的经验?

java.net.SocketException:管道损坏

我每天都会收到此错误或我的jsp页面: java.net.SocketException 消息:管道破裂 堆栈跟踪: java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:136) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2637) …. 重新启动tomcat服务后,它工作正常。 (我使用hibernate连接到mysql数据库)

MS-SQL Server,JDBC和XA事务的exception

我尝试执行XA事务时,在日志中遇到以下exception: javax.transaction.xa.XAException:com.microsoft.sqlserver.jdbc_SQLServerException:无法创建XA控件连接。 错误:“对象’xp_sqljdbc_xa_init_ex’,数据库’master’架构’dbo’上的EXECUTE权限被拒绝 我按照这些教程了解XA事务和如何使MSSQL Server XA数据源工作? 在完成第一个教程之后,我还在SSMS中运行了以下命令: 使用主GO EXEC sp_addrolemember [SqlJDBCXAUser],’MyUserName’GO 我还要补充说我跑了 使用主GO EXEC sp_grantdbaccess’MyUserName’,’MyUserName’GO validation用户是否有权访问主数据库,并且出现“用户已存在于当前数据库中”的错误。 最后,我通过SSMSvalidation了角色SqlJDBCXAUser确实具有关于xp_sqljdbc_xa_init_ex EXECUTE。 我使用的数据库显然不是master而是myDBName 。 关于这个问题,两者之间唯一的关联是MyUserName是myDBName的所有者,并且作为master的用户存在。 我的服务器在Windows XP SP3上运行(因此第一个教程中提到的修补程序不相关,因为它适用于XP SP2及其下,我知道当我尝试运行此修补程序时)。 有人遇到过这个问题吗? 我真的很感激一些线索。 谢谢, 以太 更新: 我再次看了Microsoft的第一个教程,有两个段落,我不确定它们是什么意思,它们可能包含解决方案: 在将参与分布式事务的每个SQL Server实例上执行数据库脚本xa_install.sql。 此脚本安装由sqljdbc_xa.dll调用的扩展存储过程。 这些扩展存储过程实现了Microsoft SQL Server JDBC驱动程序的分布式事务和XA支持。 您需要以SQL Server实例的管理员身份运行此脚本。 当他们说SQL Server instance ,他们是否意味着包含几个数据库的sql server,包括master和myDBName (我习惯于oracle术语有点不同)? 我按照给出的那样运行了一次xa_install.sql脚本,并指出use master 。 这是第二段: 配置用户定义的角色 要授予特定用户使用JDBC驱动程序参与分布式事务的权限,请将用户添加到SqlJDBCXAUser角色。 例如,使用以下Transact-SQL代码将名为“shelby”的用户(名为“shelby”的SQL标准登录用户)添加到SqlJDBCXAUser角色: USE master […]

在没有Hibernate Annotations的情况下纠正PostgreSQL文本类型的JPA注释

我正在开发一个应用程序: Java 1.7 JPA(包含在javaee-api 7.0中) Hibernate 4.3.8.Final PostgreSQL-JDBC 9.4-1200-jdbc41 PostgreSQL 9.3.6 我想将PostgreSQL文本数据类型用于某些String属性。 据我所知,在JPA中,这应该是正确的注释,在PostgreSQL中使用文本: @Entity public class Product{ … @Lob private String description; …. } 当我像这样注释我的实体时,我会遇到如下错误: http : //www.shredzone.de/cilla/page/299/string-lobs-on-postgresql-with-hibernate-36.html 简而言之:看起来hibernate和jdbc并不是clob / text-types的结合。 描述的解决方案正在运行: @Entity public class Product{ … @Lob @Type(type = “org.hibernate.type.TextType”) private String description; … } 但这有一个明显的缺点:源代码在编译时需要hibernate,这应该是不必要的(这是首先使用JPA的一个原因)。 另一种方法是使用这样的列注释: @Entity public class Product{ … @Column(columnDefinition = […]

我可以在Oracle 10g数据库上使用Oracle JDBC 12.1.0.1(适用于12c数据库)吗?

只是一个简单的问题(我猜)。 Oracle 为Oracle Database 12c发布了一个新的JDBC驱动程序,包括Java 7 JDBC驱动程序(ojdbc7 – 12.1.0.1)。 在这里,我们一直在使用Oracle 10g数据库和ojdbc6 for Oracle 11g(11.2.0.4),没有任何问题。 现在,我的问题。 如果我升级我的应用程序服务器以使用ojdbc7 for Oracle 12c,它是否存在风险? Oracle是否保持其驱动程序与先前版本的兼容性?

基础知识 – Hibernate / JDBC连接池问题疑难解答

什么是Hibernate对从底层连接池获取的数据库连接的责任。 是否在使用之前测试连接是否已关闭? 如果是这样从游泳池获得另一个连接? 我在下面列出了错误和确认信息。 任何我可以开始解决这个问题的想法都会非常有帮助。 以及我们正在使用的SQL Server驱动程序设置的任何建议。 从Catalina日志: 04-Nov-2010 21:54:52.691警告org.apache.tomcat.jdbc.pool.ConnectionPool.abandon连接已被放弃PooledConnection [ConnectionID:8]:java.lang.Exception 在org.apache.tomcat.jdbc.pool.ConnectionPool.getThreadDump(ConnectionPool.java:926) 在org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:681) 在org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:545) 在org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:166) at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:106) 从我们的应用程序日志 2010-11-04 21:54:52,705 [tomcat-http – 18] WARN util.JDBCExceptionReporter – SQL错误:0,SQLState:08S01 2010-11-04 21:54:52,707 [tomcat-http – 18] ERROR util.JDBCExceptionReporter – 套接字已关闭 2010-11-04 21:54:52,708 [tomcat-http – 18] ERROR transaction.JDBCTransaction – JDBC回滚失败 java.sql.SQLException:连接已关闭。 在org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:112) at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:94) at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71) at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:94) at org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:132) […]

JDBC4Connection中的内存泄漏

我试图在我们的一个Java守护进程中捕获内存泄漏,在转储内存并通过Memory Analyzer Tool进行分析之后,注意到大部分泄漏是由JDBC4Connection引起的: 10 instances of “com.mysql.jdbc.JDBC4Connection”, loaded by “sun.misc.Launcher$AppClassLoader @ 0x2aaab620ed00” occupy 858,283,752 (81.55%) bytes. Biggest instances: * com.mysql.jdbc.JDBC4Connection @ 0x2aaab64ad820 – 87,110,160 (8.28%) bytes. * com.mysql.jdbc.JDBC4Connection @ 0x2aaab64af520 – 86,730,408 (8.24%) bytes. * com.mysql.jdbc.JDBC4Connection @ 0x2aaab64ad0e0 – 86,584,048 (8.23%) bytes. * com.mysql.jdbc.JDBC4Connection @ 0x2aaab64aede0 – 86,488,800 (8.22%) bytes. * com.mysql.jdbc.JDBC4Connection @ 0x2aaab61f5320 – […]

为什么JDBC动态加载而不是导入?

在JDBC中,我只看到使用的示例 Class.forName(“com.mysql.jdbc.Driver”, true, cl); 并没有看到一个使用 import com.mysql.jdbc.Driver; 是因为我们想在执行时动态提供驱动程序包,所以只能在执行时知道吗? 如果我们在执行之前知道一个固定的驱动程序包,是否可以采用第二种方式? 你会如何比较这两种方式? 谢谢。

java.lang.OutOfMemoryError:

我正在尝试从数据库中检索的字节创建video文件。 该计划在几个小时之前运作良好。 上传大文件后,当我尝试检索它时,它产生错误java.lang.OutOfMemoryError: 我的代码是: conn = prepareConnection(); StringBuilder sb=new StringBuilder(1024); sb.append(“select videoname,videoid,videofull from “).append(uname.trim()).append(“video”); String sql=sb.toString(); stmt = conn.prepareStatement(sql); ResultSet rs = stmt.executeQuery(); while(rs.next()){ byte[] videoData = rs.getBytes(“videofull”); //#57 int vid=rs.getInt(“videoid”); StringBuilder sb1 = new StringBuilder(); sb1.append(vid); String videoid=sb1.toString(); String vname=rs.getString(“videoname”); File file=new File(“C:/Users/JamesPJ/Documents/skypark/skypark/WebContent/sp/resources/videos/”+vname+””+videoid+”.mp4″); if(file.exists() && !file.isDirectory()){ continue; } else { FileOutputStream output = new […]

将行数据从SQL数据映射到Java对象

我有一个Java类,其实例字段(和匹配的setter方法)匹配SQL数据库表的列名。 我想优雅地从表中获取一行(到ResultSet中)并将其映射到该类的实例。 例如: 我有一个“学生”类,其实例字段为“FNAME”,“LNAME”,“GRADE”,并为每个实例提供适当的getter和setter方法。 我还有一个SQL表,其中包含三个同名的列。 现在我正在做这样的事情: rs = statement.executeQuery(query); Student student = new Student(); student.setFNAME(rs.getString(“FNAME”)); student.setLNAME(rs.getString(“LNAME”)); student.setGRADE(rs.getString(“GRADE”)); 必须有一个不那么冗长的方式,对吧? 当我添加列时,这可能会变得非常烦人和混乱。