Tag: jdbc

如何记录Tomcat 7 JDBC连接池,创建连接

尽管我们正在使用Tomcat 7 JDBC连接池,但我正在尝试调试看起来过多的数据库连接被打开和关闭。 如何在数据源上调用getConnection()时导致打开新连接而不是从池中借用现有连接?

带SQL的JAVA:insert命令的返回值?

我有一个作者表:authorID,authorName。 authorID是一个带自动增量的pk。 我想在java中编写一个从用户获取名称并将其添加到表中的方法。 但是我需要返回作者的id。 有没有办法用1 sql语句做到这一点? 例如,如果我的代码有命令: stmt.executeUpdate(“INSERT INTO authors ” + “VALUES (, ‘”+ string.get(1) +”‘)”); 其中string.get(1)是作者姓名。 现在,如果我写: ResultSet rs =stmt.executeUpdate(“INSERT INTO authors ” + “VALUES (, ‘”+ string.get(1) +”‘)”); 它表示错误,因为rs是结果集,但返回的值是int。 这是我插入的行的pk吗?

如何从使用该程序的人隐藏MySQL数据库的密码

我用JDBC创建了一个java程序,它成功连接到我的计算机服务器的MySQL数据库,如下所示: try { // The newInstance() call is a work around for some // broken Java implementations Class.forName(“com.mysql.jdbc.Driver”).newInstance(); } catch (Exception ex) { // handle the error } try { conn = DriverManager.getConnection((“jdbc:mysql://191.168.1.15:3306/databasename”), “username”, “password”); // Do something with the Connection } catch (SQLException ex) { // handle any errors System.out.println(“SQLException: ” + ex.getMessage()); System.out.println(“SQLState: […]

java.sql.SQLException:连接关闭后不允许任何操作

我已经构建了一个使用session维护的应用程序。 它使用JDBC和mysql。 在服务器(Apache Tomcat 6)上部署应用程序时。 我可以登录并注销会话。 工作完全没问题。 现在我让服务器继续运行24小时。 现在第二天我输入凭据后尝试登录系统,单击“登录”按钮后,我在网页上收到错误,如下所示:(原因是什么?) Http状态500 例外 org.apache.jasper.JasperException:在第11行处理JSP页面/login.jsp时发生exception 9: Connection con =ConnectionProvider.getConnection(); 10: System.out.println(“con “+con); 11: con.setAutoCommit(false); 12: Statement st = con.createStatement(); 13: ResultSet rs; 14: rs = st.executeQuery(“select * from ejduge_login where uname='” + userid + “‘ and pass='” + pwd +”‘”); Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) root cause […]

Hibernate @Where子句

我有User类,它有组。 @Where(clause = “enabled = 1 and deleted = 0”) @Fetch(FetchMode.SUBSELECT) public Set getGroups() { return groups; } 但是当我试图在已经存储在DB中并且不适合@Where子句的Group上进行某些操作时,Hibernate只是忽略了我。 实际上, @Where我不是我的决定,但我能找到克服这一点的解决方案(创建另一个dao方法来执行某些操作)是如此丑陋。 那么,有没有办法克服这个? 还是我错过了什么? 谢谢您的帮助。

在Spring 5中替换jdbc.support.nativejdbc remove

我正在将我的项目升级到Spring 5,我注意到它不再有org.springframework.jdbc.support.nativejdbc包。 我们使用SimpleNativeJdbcExtractor来提取本机JDBC Connection 。 当然,我可以使用Spring 4中的源代码并将其嵌入到我的项目中,但是我更愿意依赖一个完善的库。 Spring Framework网站只说包被删除,并没有提供任何替代方案。 搜索Spring 5源代码不会产生任何结果。 我想知道这里是否有人可以就替代品的含义提出建议。

部分失败时的executeBatch行为

我有一个java 1.6应用程序,它使用批量插入来使用jdbc驱动程序在Oracle数据库中插入记录。 正如您在Statement对象上所知,有一个名为executeBatch()的方法,我们将其用于批量更新。 它有一个返回类型的int数组,其中包含每个记录的执行结果。 但它也会在出现错误时抛出BatchUpdateException,我们也可以从中获取结果int数组。 我的问题是我应该期待什么样的错误情况BatchUpdateException和什么时候我应该期望没有抛出exception但是对于某些记录我得失败。 注意:问题特别针对Oracle JDBC。 为了更清楚,我已经看到在执行executeBatch()之后的情况我没有得到BatchUpdateException,但是一些insert语句失败了。 我的问题是关于可能发生的情况? 这是Statement.executeBatch()方法的返回javadoc。 根据这里的一般意见,当一个条目失败时,执行抛出BatchUpdateException然后在哪种情况下我们可以预期返回数组中的某些条目失败。 * @return an array of update counts, with one entry for each command in the * batch. The elements are ordered according to the order in which * the commands were added to the batch. * * * If the value of an […]

播放框架和jdbc阻止io调用是否存在主要的扩展限制

我正在使用playframework(2.4)for Java并将其连接到Postgres。 play框架被用作一个宁静的服务,它所做的就是使用JDBC进行插入,更新,读取和删除。 在这个播放页面https://www.playframework.com/documentation/2.3.x/JavaAsync上,它明确指出JDBC是阻塞的,并且该播放的线程很少。 对于那些了解这一点的人来说,这是多么有限,是否有某些方法可以解决这个问题? 我的特定应用程序每秒可以有几百个数据库调用。 我将拥有所有硬件和额外的服务器,但不知道播放如何处理这个或扩展以在代码中处理这个。 我的游戏代码如下: public static Result myprofile() { DynamicForm requestData = Form.form().bindFromRequest(); Integer id = Integer.parseInt(requestData.get(“id”)); try { JSONObject jo = null; Connection conn = DB.getConnection(); ResultSet rs; JSONArray ja = new JSONArray(); PreparedStatement ps = conn.prepareStatement(“SELECT p.fullname as fullname, s.post as post,to_char(s.created_on, ‘MON DD,YYYY’) as created_on,s.last_reply as last_reply,s.id as […]

使用JNDI进行数据库连接

这可能听起来像一个菜鸟问题,但这是我第一次踏入数据库领域。 从这里我得到了信息 在服务器和数据库之间实现通信的最有效方法是设置数据库连接池。 为每个客户端请求创建新连接可能非常耗时,尤其是对于持续接收大量请求的应用程序。 本教程使用JNDI数据源。 我的应用程序也类似(但我不会使用Tomcat,只是套接字),我的服务器将收到来自多个客户端的请求,但我不明白为什么我应该使用JNDI数据源,为什么服务器不能维护一个打开与数据库的连接,当客户端请求到达时,它将处理请求并将数据提供给客户端。 在最坏的情况下,如果我需要一个JNDI,我怎么能用我的服务器应用程序实现它?

连接关闭时活动事务的行为?

如果调用close方法并且存在活动事务,那么活动事务会发生什么? 他们会被提交还是回滚?