Tag: jdbc

JDBC – 用于只读操作的setAutoCommit

假设我有一个创建数据库连接的常用方法: Connection getConnection() throws SQLException { Connection con = … // create the connection con.setAutoCommit(false); return con; } 我在这里setAutoCommit(false)调用,以便此方法的调用者不必担心设置它。 但是,如果调用者执行的操作只是读取数据,这是不好的做法吗? 有没有额外的开销? 我个人认为,最好将逻辑集中在一个地方,这样调用者就不必设置自动提交,这样可以避免代码冗余。 我只是想确保它不会给只读操作带来任何不必要的开销。

在方法之间重用PreparedStatement?

我们都知道 ,我们应该重新使用JDBC PreparedStatement不是在循环中创建新实例。 但是如何处理不同方法调用之间的PreparedStatement重用? 重用 – “规则”仍然有效吗? 我是否应该考虑为PreparedStatement使用字段,还是应该在每次调用时关闭并重新创建预准备语句(保持本地状态)? (当然,这样一个类的实例将绑定到一个Connection ,这在某些架构中可能是一个缺点) 我知道理想的答案可能是“它取决于”。 但我正在寻找经验不足的开发人员的最佳实践,他们将在大多数情况下做出正确的选择。

Java:插入表日期时间数据

我试图在MS-SQL数据库中插入一个变量当前的日期和时间。 我用这种格式: DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss.SSS”); Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal.getTime())); 我得到了这个结果2013-01-28 09:29:37.941 我在数据库中的字段是定义datetime ,正如我在其他具有相同字段的表中看到的那样,日期和时间的编写方式与2011-07-05 14:18:33.000完全相同。 我尝试使用我在java程序中执行的查询插入数据库,但是我收到此错误 SQLexception:状态:S0003消息:将varchar数据类型转换为值的日期时间数据类型超出范围。 错误:242 我的查询是这样的: query = “INSERT INTO Companies CreatedOn”+ “VALUES (‘” + dateFormat.format(cal.getTime()) + “‘)” 但我不明白我做错了什么。

JDBC PreparedStatement批量继续插入错误

大家好我在java中创建一个带有PreparedStatement的批处理 for(Item item: list){ ps.setString(1, item.getSome()); ps.setString(2, item.getFoo()); ps.setString(3, item.getBatman()); statement.addBatch(); if (++count % batchSize == 0) { results = ps.executeBatch(); //execute parcial batch if (results != null) System.out.println(results.length); } } results= ps.executeBatch(); //execute rest of batch 数据库服务器是一个MySQL,在表中插入我有几个限制 当我插入时通过这些限制生成错误 我想运行批处理并省略错误 ,此时抛出一个exception结束批处理 在我创建批处理之前,我有一个大的保存逐个像 //seudocode level For item Try{ insert item }catch(E){nothing happens} 但它很慢,在某些情况下,批处理产生4000项,插入1500并省略其余部分 我该如何处理批次? 编辑 我使用weblogic与这个驱动程序mysql-connector-java-commercial-5.0.3-bin […]

如何从jdbc连接获取驱动程序类名(不是驱动程序名)

我有一个以下格式的context.xml文件 WEB-INF/web.xml 从这个contex.xml我需要获取我的Driver CLASS名称。 我每次尝试都喜欢 DataSource ds = (DataSource)context.lookup(“java:/jdbc/myDataSource”) 并尝试从连接中获取驱动程序类名称 ds.getConnection().getMetatData().getDriverName() 它只返回Oracle JDBC Driver而不是类名oracle.jdbc.driver.OracleDriver 如何从上下文中获取类名。

如何在没有主键的情况下为表或视图执行hibernate映射

可能重复: Hibernate并没有PK 任何人都知道如何在没有主键的情况下为表或视图执行hibernate映射?

使用数据库信息填充JSP下拉列表

我正在尝试从数据库表填充JSP下拉列表。 这是将创建数组并用数据库信息填充它的代码: // this will create my array public static ArrayList getBrandsMakes() { ArrayList arrayBrandsMake = new ArrayList(); while (rs.next()) { arrayBrandsMake.add(loadOB(rs)); } return arrayBrandsMake; } // this will load my array object private static DropDownBrands loadOB(ResultSet rs) throws SQLException { DropDownBrands OB = new DropDownBrands(); OB.setBrands(“BRAN”); return OB; } 如何从我的JSP调用该类并填充下拉列表?

如何使用Java测试与Oracle数据库的连接

有没有办法使用Java测试我与oracle数据库的连接? 这是我的代码。 public class OracleConnection { public static void main(String[] args) throws Exception { //connect to database Class.forName(“oracle.jdbc.driver.OracleDriver”); String serverName = “00.000.0.000”; String portNumber = “1521”; String sid = “My Sid”; String url = “jdbc:oracle:thin:@” + serverName + “:” + portNumber + “:” + sid; String username = “UNAME”; String password = “PASSWORD”; Connection conn […]

“com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败”到远程数据库

我试图连接到我的远程MySQL数据库,但我失败了并得到了这个错误。 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 令人困惑的是,当我使用MySQL-Front工具连接远程数据库时,它是有效的,我可以成功ping到IP地址。 但是当我使用我的代码时,它会在大约十秒后显示错误。 此外,当我在我的代码中使用了错误的用户名或密码时,它会立即显示错误的validation。 这是否certificate设置连接是没有问题的? 这是我的代码(它可以在我的localhost数据库上工作): public static void main(String[] args) { String url = “jdbc:mysql://(IP address):3306/”; String dbName = “talk”; String driver = “com.mysql.jdbc.Driver”; String userName = “talkroot”; String password = “123456”; try { Class.forName(driver).newInstance(); Connection conn = DriverManager.getConnection(url + dbName, userName, password); System.out.println(“connect”); conn.close(); } catch (Exception e) { […]

JDBC SQL SERVER:该语句未返回结果集

我正在从Microsoft SQL Server Studio执行以下查询,该查询工作正常并显示结果: SELECT * INTO #temp_table FROM md_criteria_join WHERE user_name = ‘tecgaw’ UPDATE #temp_table SET user_name = ‘tec’ WHERE user_name != ‘tec’ SELECT * FROM md_criteria_join WHERE user_name = ‘tec’ AND view_name NOT IN (SELECT view_name FROM md_criteria_join WHERE user_name = ‘tecgaw’) UNION SELECT * FROM #temp_table ORDER BY view_name, user_name, crit_usage_seq, crit_join_seq […]