Tag: jdbc

如何在Tomcat中创建没有池的数据源

我使用JNDI上下文在Tomcat的context.xml文件中为JDBC驱动程序创建数据源,如下所示, 默认情况下,Tomcat将使用DBCP数据源工厂并创建池化数据源。 我们使用的特定数据库和驱动程序已经支持较低级别的池,而额外的池实际上会损害性能。 无论如何使用像这样的JNDI资源创建基本数据源(没有池),这样我可以在最小配置更改的情况下在不同的数据库之间切换? 我知道我可以编写自己的数据源工厂或使用其他驱动程序来实现这一点,但我正在寻找一个更简单的解决方案。

NamedJDBCTemplate参数是列表列表

我有一个看起来像这样的查询: SELECT * FROM someTable t WHERE (ta, tb) IN (VALUES (1, 2), (3, 4)) 并且它将选择ta == 1 AND tb == 2或ta == 3 AND tb == 4任何记录。 这似乎工作得很好。 但是,我无法找到一种干净的方法来为NamedJDBCTemplate指定参数。 我尝试给它一个列表列表(即List<List> ),但它似乎炸毁了这样做。 val query = “SELECT * FROM someTable t WHERE (ta, tb) IN (VALUES :values)” namedJdbcTemplate.queryForList(query, mapOf(“values” to listOf(listOf(1, 2), listOf(3, 4)))) 我也尝试手动将值转换为字符串,但这也不会让它变得快乐。 namedJdbcTemplate.queryForList(query, […]

如何在Java中设置全局默认日期格式?

有没有办法设置用于将字符串解析为日期的默认DateFormat类? 我的背景:我从JDBC读取日期值的exception,因为日期字符串不是预期的格式。 (文字添加于2011-07-22): 似乎我需要确定我的问题描述:我使用外部专有数据库和专有JDBC驱动程序。 在数据库端不可能知道甚至更改列类型。 当我尝试通过ResultSet.getDate()或ResultSet.getObject()读取ResultSet列时,在JDBC驱动程序中会触发一些exception,例如“1999年7月10日不是有效日期”。 我想要实现的是通过设置一些适当的全局默认日期格式来避免此内部exception。 也许我需要先实现一些自定义Locale并将Locale全局安装?

优化查询:DBMS_METADATA.GET_DDL(Oracle)

我想得到所有表的所有表定义。 而且我想快速完成它(它是我运行很多的脚本的一部分) 我正在使用oracle 11g,我有700个表。 在一个简单的jdbc代码上,它需要4分钟,并执行: s = con.statement(“select DBMS_METADATA.GET_DDL(object_type,object_name) from user_objects where object_type = ‘TABLE’); s.execute(); rs = s.getResultSet(); while(rs.next()){ rs.getString(1); } 所以我想优化这段代码并达到20秒左右。 我已经通过创建14个线程达到40-50秒,每个线程打开与数据库的连接并使用rownum上的mod读取部分信息。 但这还不够。 我正在考虑这些方向: http://docs.oracle.com/cd/B10501_01/java.920/a96654/connpoca.htm#1063660 – 连接缓存。 它可以通过用connectionCaching替换我的14个连接来帮助加快速度吗? 是否可以在KEEP缓冲区缓存区域中保持此函数访问的表? 无论如何索引一些信息在这里? 任何其他建议将不胜感激。 谢谢

JDBC ResultSet对象类型映射没有Byte还是Short? 为什么只有Integer?

美好的一天。 任何人都可以解释为什么JDBC没有为某些类型实现对象映射。 例如,Postgres JDBC没有字节和短映射。 我可以得到原始字节和短字,但在对象格式中我只能得到整数。 这是源代码 case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: return getInt(columnIndex); 字节和短对象类型有什么问题? 我如何使用TINYINT,SMALLINT等。 实现与getInt类似的getByte和getShort有什么问题

如何在java中执行复合sql查询?

如何执行以下查询并通过预准备语句检索结果: INSERT INTO vcVisitors (sid) VALUES (?); SELECT LAST_INSERT_ID(); 有没有办法一次执行这两个语句? 我试着做以下事情: Connection con = DbManager.getConnection(); PreparedStatement ps = con.PrepareStatement( “INSERT INTO vcVisitors (sid) VALUES (?); SELECT LAST_INSERT_ID();”); ps.setInt(1, 10); ResultSet rs = ps.exequteQuery(); rs.next(); return rs.getInt(“LAST_INSERT_ID()”); 但它给我一个错误,executeQuery无法执行这样的查询,我也尝试通过以下方式替换executeQuery: ps.execute(); rs = ps.getResultSet(); 但它给了我SQL语法错误: You have an error in your SQL syntax; check the manual that corresponds […]

使用JDBI获取Postgres数组数据

我有一个使用JDBI(一个JDBC包装器)来访问PostgreSQL数据库的java程序。 其中一列是数组数据类型(mycolumn integer[]) 。 我在mapper类中使用了什么? 我认为resultSet.getArray(“mycolumn”)是正确的做法,但我不知道如何从返回的java.sql.Array对象中获取数据。 有关如何执行此操作的任何提示或良好链接?

带有返回值的存储过程

我有一个存储过程“test”,看起来像: CREATE PROCEDURE test @name varchar(32) AS DECLARE @login_status TINYINT, @syb_login varchar(20), @syb_pass varchar(20) … .. BEGIN SELECT @status = 0 SELECT @login as login, @pass as pass, @status as status RETURN 0 END 我需要将一个输入参数“myName”作为输入参数传递给此过程,然后返回登录,传递和状态作为输出(仅来自一个记录)参数。 在JDBC中,我试着像下面这样做: String query = “{call test(?,?,?)}”; System.out.println(query); CallableStatement proc = null; ResultSet rs; try { proc = connection.prepareCall(query); proc.setString(1, “myName”); […]

通过JDBC瘦驱动程序(Domino Java)连接Oracle 11g时出现问题

我无法使用以下代码远程连接Oracle 11数据库。 但是,如果我尝试连接安装在我的计算机上的Oracle 9数据库,相同的代码工作正常。 缺什么 ? (我没有收到任何错误,Lotus Notes挂起) import lotus.domino.*; import java.sql.*; import oracle.jdbc.*; public class JavaAgent extends AgentBase { public void NotesMain() { try { Session session = getSession(); AgentContext agentContext = session.getAgentContext(); Database db = agentContext.getCurrentDatabase(); //Calling connection method Connection conn= getOracleConnection(db); if(conn!=null){ System.out.println(“Connected..”); } else { System.out.println(“There is a problem in connecting […]

在加载jdbc:odbc驱动程序时,Class类中的forName()方法做了什么?

我正在学习如何使我的Java应用程序与MS Access数据库通信。 我不确定一个方法,Class.forName()方法。 我传递的参数是“sun.jdbc.odbc.JdbcOdbcDriver”,它加载用于访问数据库的jdbc:odbc桥。 Class.forName()究竟做了什么,为什么需要它? 非常感谢你。