Tag: jdbc

从Java调用PL / SQL函数时的“SQLException:ORA-06550”

我想使用Java从数据库中检索数据并显示它,所以我创建了这个PL / SQL函数,它返回一个游标: create or replace function std_getInfoFunc return types.cursortype as my_cursor types.cursorType; begin open my_cursor FOR SELECT s.FirstName, s.LastName, s.Address, s.City, s.Province , s.PostalCode, c.CourseName FROM Students s, Courses c, StudentAndCourses cs Where s.StudentID = cs.StudentID AND c.CourseID = cs.CourseID; Return my_cursor; end; 在我的Java代码中,我调用函数如下: try{ CallableStatement cst=connection.prepareCall(“{? = call std_getInfoFunc}”); cst.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR); cst.execute(); res=(ResultSet) […]

更新到Apple Java for Mac OS X 10.6 update 6后,sqljdbc4挂起

最新的Apple Java for Mac OS X 10.6更新6挂起我的mssql jdbc驱动程序(sqljdbc4.jar),有没有其他人遇到这个问题? 任何修复? 有人知道恢复更新5的方法吗?

Spring:如何使用GenericDao获取多个数据源?

我有一个使用Spring 3.1.1的Web应用程序。 我们有一个使用JdbcTemplate的genericDao。 Datasource在GenericDaoImpl中这样注入。 public class GenericDaoImpl implements GenericDao { protected Class entityClass; protected JdbcTemplate jdbcTemplate; @Autowired public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } …. @Override public List findAll(String sql, ParameterizedRowMapper mapper, Object… args) { return jdbcTemplate.query(sql, mapper, args); } } 这是一个简单的DAO。 @Repository public class ElementDaoImpl extends GenericDaoImpl implements ElementDao { private […]

收集所有发出的SQL的最简单方法

出于多种原因,我不想透露(冗长乏味的故事),我需要捕获复杂应用程序与数据库的交互。 该应用程序构建在Spring / JdbcTemplate之上,我需要找到该应用程序发出的所有SQL。 我怎么能以最简单的方式做到这一点? 创建JdbcTemplate的伪模拟实现似乎不合理。 首先,JdbcTemplate是一个类,而不是一个接口。 其次它有一个大的界面,使实施起来很繁琐。 我正在考虑模拟DataSource和Connection以获取所有SQL发送出去,但也许有一种更简单的方法可以做到这一点?

Spring JDBC事务管理器

我尝试在Spring中使用JDBC编写事务管理器。 我的app-servlet.xml 我的UserDAOImpl.java public class UserDAOImpl implements UserDAO { //transaction manager private DataSourceTransactionManager transactionManager; private JdbcTemplate jdbcTemplate; public UserDAOImpl() { super(); DataSource dataSource = transactionManager.getDataSource(); jdbcTemplate = new JdbcTemplate(dataSource); } public void setTransactionManager(DataSourceTransactionManager transactionManager) { this.transactionManager = transactionManager; } …. } 即使我的app-servlet中有transactionManager Bean, UserDAOImpl也不会被实例化,因为transactionManager为null 。 可能我会错过一些观点,但无法找出问题所在。

Tomcat连接池与准备好的语句缓存

从DBCP连接池升级到Tomcat自己的实现(基于此处的优秀比较); 我有点困惑为什么他们放弃这两个属性,同时保留其他一切: poolPreparedStatements=”true” maxOpenPreparedStatements=”10000″ 这是否意味着此实现中不支持预准备语句池? 默认情况下,每个连接是否都维护自己的预准备语句池? 我花了相当长的时间研究这个并找不到明确的答案! 谢谢你的时间。

在eclipse java项目中加载dll文件

我正在尝试将文件sqljdbc_auth.dll添加到项目库中。 我将包含dll的文件夹添加为外部类文件夹。 在这里,我基本上尝试使用Microsoft提供的SQL驱动程序连接到我的SQL SERVER 2008数据库。 我的代码是 private static void Connect(){ try { Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”); String connectionUrl = “jdbc:hostname:1433;databaseName=dbname;” + “user=username;password=password”; java.sql.Connection con = DriverManager.getConnection(connectionUrl); } catch(ClassNotFoundException e) { e.printStackTrace(); } catch(SQLException e2) { e2.printStackTrace(); } }` 我收到以下错误 WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for […]

Java JDBC效率:连接需要多长时间?

我还在努力解决同样的问题。 它似乎工作正常,特别是在创建如下所示的AbstractModel类之后: public abstract class AbstractModel { protected static Connection myConnection = SingletonConnection.instance().establishConnection(); protected static Statement stmt; protected static ResultSet rs; protected boolean loginCheck; // if userId and userLoginHistoryId are valid – true, else false protected boolean userLoggedIn; // if user is already logged in – true, else false public AbstractModel (int userId, Long userLoginHistoryId){ […]

无法通过JAVA连接到HIVE2

参考Hive2创建了一个连接到HIVE2服务器(非本地)的简单java程序,在eclipse的类路径中添加了上述链接中所有提到的jar,但是当我运行代码时它会抛出一个错误: 09:42:35,580 INFO Utils:285 – Supplied authorities: hdstg-c01-edge-03:20000 09:42:35,583 INFO Utils:372 – Resolved authority: hdstg-c01-edge-03:20000 09:42:35,656 INFO HiveConnection:189 – Will try to open client transport with JDBC Uri: jdbc:hive2://hdstg-c01-edge-03:20000 FAILED: f java.lang.NoSuchMethodError: org.apache.thrift.protocol.TProtocol.getScheme()Ljava/lang/Class; at org.apache.hive.service.cli.thrift.TCLIService$OpenSession_args.write(TCLIService.java:1854) at org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:63) at org.apache.hive.service.cli.thrift.TCLIService$Client.send_OpenSession(TCLIService.java:150) at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:142) at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:456) at org.apache.hive.jdbc.HiveConnection.(HiveConnection.java:178) at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) at java.sql.DriverManager.getConnection(DriverManager.java:579) at java.sql.DriverManager.getConnection(DriverManager.java:221) at testScripts.HiveJdbcClient.f(HiveJdbcClient.java:19) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native […]

getResultSet()“每个结果应该只调用一次”

根据java.sql.Statement getResultSet的文档 ,它说: 以ResultSet对象的forms检索当前结果。 每个结果只应调用一次此方法。 使用一些测试代码,我运行了executeQuery()和几次调用getResultSet()并观察到返回的ResultSet指向同一个对象。 所以我猜它没有返回你需要单独关闭的不同ResultSet 。 但当然这对我的JDBC驱动程序来说可能是独一无二的。 查看ResultSet的文档 ,它说: 默认的ResultSet对象不可更新,并且只有一个向前移动的游标。 因此,您只能迭代一次,并且只能从第一行到最后一行。 这似乎是一个很好的理由,为什么多次调用它可能不是一个好主意,因为它可能导致一些“陷阱”的情况。 如果这是唯一的原因,我觉得他们可能刚刚说过,所以我认为可能还有更多不仅仅是这个。 那么有谁知道为什么每个结果不应该多次调用getResultSet ? 这个问题首先让我好奇。