相关疑难解决方法(0)

什么是样板代码?

一位同事从未听说过这一点,我无法提供真正的定义.对我来说,它总是一个'我知道 - 当我看到它'的例子.

奖金问题,谁来源于这个词?

terminology definition boilerplate

364
推荐指数
11
解决办法
14万
查看次数

用Java关闭数据库连接

我有点困惑,我正在阅读以下http://en.wikipedia.org/wiki/Java_Database_Connectivity

Connection conn = DriverManager.getConnection(
     "jdbc:somejdbcvendor:other data needed by some jdbc vendor",
     "myLogin",
     "myPassword" );

Statement stmt = conn.createStatement();
try {
    stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) " );
} finally {
    //It's important to close the statement when you are done with it
    stmt.close();
}
Run Code Online (Sandbox Code Playgroud)

你不需要关闭连接吗?如果没有发生conn.close(),会发生什么?

我有一个私人网络应用程序,我正在维护,目前没有关闭任何一种形式,但重要的是真正的stmt one,conn one或者两者兼而有之?

该网站间歇性地停止,但服务器一直说这是一个数据库连接问题,我怀疑它没有关闭,但我不知道哪个关闭.

java database-connection

113
推荐指数
6
解决办法
25万
查看次数

java.sql.SQLException: - ORA-01000:超出最大打开游标数

我收到了ORA-01000 SQL异常.所以我有一些与之相关的问题.

  1. 最大打开游标是否与JDBC连接数完全相关,或者它们是否与我们为单个连接创建的语句和结果集对象相关?(我们正在使用连接池)
  2. 有没有办法配置数据库中的语句/结果集对象的数量(如连接)?
  3. 是否建议在单线程环境中使用实例变量statement/resultset对象而不是方法local statement/resultset对象?
  4. 在循环中执行预准备语句会导致此问题吗?(当然,我本可以使用sqlBatch)注意:一旦循环结束,pStmt就会关闭.

    { //method try starts  
      String sql = "INSERT into TblName (col1, col2) VALUES(?, ?)";
      pStmt = obj.getConnection().prepareStatement(sql);
      pStmt.setLong(1, subscriberID);
      for (String language : additionalLangs) {
        pStmt.setInt(2, Integer.parseInt(language));
        pStmt.execute();
      }
    } //method/try ends
    
    { //finally starts
       pStmt.close()
    } //finally ends 
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果在单个连接对象上多次调用conn.createStatement()和conn.prepareStatement(sql)会发生什么?

Edit1: 6.使用Weak/Soft引用语句对象是否有助于防止泄漏?

Edit2: 1.有什么办法,我可以在项目中找到所有缺少的"statement.close()"吗?我知道这不是内存泄漏.但我需要找一个符合垃圾收集条件的语句引用(不执行close())?有什么工具可用?或者我必须手动分析它?

请帮我理解.

在Oracle DB中查找已打开的用户名-VELU的游标

转到ORALCE机器并以sysdba启动sqlplus.

[oracle@db01 ~]$ sqlplus / as sysdba 
Run Code Online (Sandbox Code Playgroud)

然后跑

SELECT   A.VALUE,
    S.USERNAME,
    S.SID,
    S.SERIAL#
  FROM V$SESSTAT A,
    V$STATNAME B,
    V$SESSION S
  WHERE A.STATISTIC# = B.STATISTIC#
    AND …
Run Code Online (Sandbox Code Playgroud)

java jdbc

110
推荐指数
3
解决办法
31万
查看次数

连接关闭时ResultSet未关闭?

我一直在对我们的宠物项目之一进行代码审查(主要使用像FindBugs这样的工具),FindBugs将以下代码标记为错误(伪代码):

Connection conn = dataSource.getConnection();

try{
    PreparedStatement stmt = conn.prepareStatement();
    //initialize the statement
    stmt.execute();
    ResultSet rs =  stmt.getResultSet();
    //get data
}finally{
    conn.close();
}
Run Code Online (Sandbox Code Playgroud)

错误是此代码可能不会释放资源.我发现ResultSet和Statement没有关闭,所以我最后关闭了它们:

finally{
    try{
        rs.close()
    }catch(SqlException se){
        //log it
    }
    try{
        stmt.close();
    }catch(SqlException se){
        //log it
    }
    conn.close();
}
Run Code Online (Sandbox Code Playgroud)

但是我在很多项目中遇到过上述模式(来自不少公司),没有人关闭ResultSet或Statements.

在Connection关闭时,您是否遇到没有关闭ResultSet和Statements的麻烦?

我发现只有这个,它指的是Oracle在关闭Connections时关闭ResultSet的问题(我们使用Oracle db,因此我的更正).java.sql.api在Connection.close()javadoc中什么也没说.

java findbugs jdbc

49
推荐指数
6
解决办法
6万
查看次数

何时在JDBC中关闭Connection,Statement,PreparedStatement和ResultSet

关于JDBC编码的几个问题:

  1. 对于单个客户端应用程序,我们是否需要连接池?
  2. 在开始时创建一个Connection并保持活着而不关闭它直到应用程序退出是一个好主意吗?为什么?
  3. PreparedStatement与Connection关联,如果我的连接在每次查询后没有关闭,为什么不保持PreparedStatement活着并在其他方法中重用它?
  4. 如果我们为每个查询创建PreparedStatement,数据库是否知道它是相同的PreparedStaement并在第一次之后忽略不必要的操作?
  5. PreparedStatement不会创建一次并重复使用多次语句?如果是的话,为什么每次都需要关闭它?

我知道对close()的调用会释放资源.但是如果我们知道我们稍后会使用它,为什么要释放它然后再请求它呢?

多客户端应用程序怎么样?我们需要连接池,所以我们每次都需要创建和关闭Connection,Statement和PreparedStatement?

谢谢,

java connection jdbc resultset

30
推荐指数
1
解决办法
1万
查看次数

我是否需要关闭PreparedStatement

我有一个网站,获得了大量的点击,我遇到了问题,JDCB连接错误.

我对关闭有点困惑PreparedStatement,我需要关闭PreparedStatement还是只关闭Statement才关闭.

那么ResultSet,我需要关闭它吗?

java jdbc

21
推荐指数
2
解决办法
4万
查看次数

关闭Connection会自动关闭语句和结果集吗?

我知道Java中的安全模式是在finally块中按顺序关闭ResultSet,Statement和Connection.

如果你关闭连接然后尝试关闭语句(不抛出异常).但是,如果您尝试从语句中调用任何方法,则会抛出异常.

我想知道关闭连接会自动关闭从该连接创建的所有语句对象吗?

更新:
我正在使用DatabaseProductVersion:Oracle Database 11g 11.1.0.0.0版
DriverName:Oracle JDBC驱动程序
DriverVersion:10.2.0.4.0

java database database-connection prepared-statement

20
推荐指数
1
解决办法
2万
查看次数

重用Statement和Resultset是否会释放先前使用的资源?或者我必须在重用之前明确关闭它们?

示例代码:

        aStmt = aConn.prepareStatement(aQuery);
        aRset = aStmt.executeQuery(cQuery);

        while (cRset.next()) {
            //stuff to determine value of parm1

            aStmt.setString(1, parm1);                
            aRset = aStmt.executeQuery(); 

            //more stuff
        }
Run Code Online (Sandbox Code Playgroud)

在while语句中的每个循环之后,我是否必须关闭aStmt和aRset?或者将在后续循环中重用它们释放从先前循环中使用的内存/资源?

java jdbc resultset

19
推荐指数
1
解决办法
2万
查看次数

在Java 7中关闭ResultSet

以下站点显示了使用JDBC的新"AutoClosable"功能:link.此站点显示了语句将如何自动关闭,但结果集不在try()部分中,它将自动关闭.所以,我的问题是,我不需要直接在Java 7中关闭ResultSet吗?我一直使用模式:close resultset,close语句,close连接.

java jdbc

7
推荐指数
1
解决办法
3567
查看次数

方法可能无法清除已检查异常上的流或资源 - FindBugs

我正在使用Spring JDBCTemplate访问数据库中的数据,并且其工作正常.但FindBugs在我的代码片段中指出了一个小问题.

码:

public String createUser(final User user) {
        try { 
            final String insertQuery = "insert into user (id, username, firstname, lastname) values (?, ?, ?, ?)";
            KeyHolder keyHolder = new GeneratedKeyHolder();
            jdbcTemplate.update(new PreparedStatementCreator() {
                public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
                    PreparedStatement ps = connection.prepareStatement(insertQuery, new String[] { "id" });
                    ps.setInt(1, user.getUserId());
                    ps.setString(2, user.getUserName());
                    ps.setString(3, user.getFirstName());
                    ps.setInt(4, user.getLastName());
                    return ps;
                }
            }, keyHolder);
            int userId = keyHolder.getKey().intValue();
            return "user created successfully with user id: " + userId;
        } catch …
Run Code Online (Sandbox Code Playgroud)

java spring findbugs jdbctemplate

7
推荐指数
2
解决办法
1万
查看次数