精华内容
下载资源
问答
  • 用jprofiler和jconsole测试下列四种组合,前三种组合消耗年轻代100M左右,老年代没影响。第四种组合伤心病狂,年轻代和... prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); pre...

    用jprofiler和jconsole测试下列四种组合,前三种组合消耗年轻代100M左右,老年代没影响。第四种组合伤心病狂,年轻代和老年代均消耗400M, 可以检查一下项目,看有没有踩雷。 prepareStatement(sql); prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE); prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); 参数 int type: ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。 ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。 ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。 参数 int concurrency: ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。 ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。

    jsp代码,部署到tomcat下面:
    <%@page import=“java.sql."%>
    <%@page import="java.util.
    ”%>

    <%@ page session=“false” %>
    <%!
    public class TestResultSetType {
    public void selectDB(String sql){
    Connection con = null;
    PreparedStatement pre = null;
    ResultSet result = null;
    try
    {
    Class.forName(“oracle.jdbc.driver.OracleDriver”);
    String url = “jdbc:oracle:thin:@10.10.11.16:1525:orcldb”;
    String user = “test”;
    String password = “test”;
    con = DriverManager.getConnection(url, user, password);
    //pre = con.prepareStatement(sql);
    //pre =con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
    //pre =con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE);
    pre =con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
    result =pre.executeQuery();
    while (result.next ()) {
    result.getInt(“object_id”);
    result.getString(“object_name”);
    }
    }catch (Exception e){
    e.printStackTrace();
    }
    finally{
    try{
    if (result != null)
    result.close();
    if (pre != null)
    pre.close();
    if (con != null)
    con.close();
    }
    catch (Exception e){
    e.printStackTrace();
    }
    }
    }
    }
    %>

    <%
    TestResultSetType testResultSetType = new TestResultSetType();
    testResultSetType.selectDB(“select * from test1”);
    out.print("----------------11---------------------");
    %>

    Oracle数据库:
    create table test1 as select * from dba_objects;
    制造出40万的数据。

    展开全文
  • java连接oracle数据库

    java连接oracle数据库

    Connection conn = null; 
    Statement stmt = null;
    ResultSet rs = null;
    String url="jdbc:oracle:thin:@192.239.99.109:1521:orcl";
    
    	      try {
    	            Class.forName("oracle.jdbc.driver.OracleDriver");
    	            conn = DriverManager.getConnection(url, "g4studio", "g4studio");
    	            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
    	            		ResultSet.CONCUR_UPDATABLE);
    	            rs = stmt.executeQuery("SELECT * FROM GEO_ENTITY_RECOG where STMC like '%"+searchName+"%'");
    	            ResultSetMetaData m=rs.getMetaData();
    	            int columns=m.getColumnCount();
    	            rs.beforeFirst();//将结果集指针指回到开始位置
    	            while(rs.next())
    	            {
    	             for(int i=1;i<=columns;i++)
    	             {
    	              System.out.print(rs.getString(i));
    	              System.out.print("\t\t");
    	             }
    	            }
    	        }
    	         catch (ClassNotFoundException e) {
    	            e.printStackTrace();
    	        } catch (SQLException e) {
    	            e.printStackTrace();
    	        } 
    	      finally {
    	            try {
    	                if(rs != null) {
    	                    rs.close();
    	                    rs = null;
    	                }
    	                if(stmt != null) {
    	                    stmt.close();
    	                    stmt= null;
    	                }
    	                if(conn != null) {
    	                    conn.close();
    	                    conn = null;
    	                }
    	            } catch (SQLException e) {
    	                e.printStackTrace();
    	            }
    	        }
    这样遍历了整个ResultSet,,oracle的遍历是从游标的头开始的,所以,首先得把游标放到第一位,要不会结果集耗尽

    这样的sql有sql注入风险,练习之用.

    展开全文
  • oracle: ResultSet结果集next()问题

    千次阅读 2011-08-10 16:51:53
    见源文档: ********************************************************************************************************* next() This method fetche

    见源文档:

    *********************************************************************************************************

    next()

    This method fetches a specified number of rows, numRows, from a previously executed query, and reports the Status of this fetch as definded in Table 12-37.

    For non-streamed mode, next() will only return the status of DATA_AVAILABLE or END_OF_FETCH.

    • When fetching one row at a time (numRows=1), process the data using getxxx() methods.

    • When fetching several rows at once (numRows>1), as in an Array Fetch, you must use the setDataBuffer() method to specify the location of your preallocated buffers before invoking next().

    Up to numRows data records would populate the buffers specified by the setDataBuffer() call. To determine exactly how many records were returned, use the getNumArrayRows() method.

    ********************************************************************************************************

    而需要注意的问题:

    当获得一个结果集后,尤其是结果集只有一条记录时不要忘记调用next()来指向“下一条可用的”记录。如果不执行next()便访问结果集会报如下错误:

    ORA-32129: cannot get information about this column

    展开全文
  • 上篇文章已经使用Statement实现了对数据库的增删改操作,接下来使用ResultSet结果集执行查询操作步骤如下:ResultSet:结果集.封装了使用JDNC进行查询的结果1.调用Statement对象的executeQuery(sql) 可以得到结果集2....

    上篇文章已经使用Statement实现了对数据库的增删改操作,接下来使用ResultSet结果集执行查询操作

    步骤如下:

    ResultSet:结果集.封装了使用JDNC进行查询的结果

    1.调用Statement对象的executeQuery(sql) 可以得到结果集

    2.ResultSet返回的实际上就是一张数据表,有一个指针指向数据表的第一行的前面

    可以调用next() 方法检测下一行是否有效,若有效该方法返回true,且指针下移。

    3.当指针对位到一行时。可以调用getXxx(index) 或getXxx(columnName)

    获取每一列的值 例如:getInt(1),getString(“name”)

    4/Reslut 当然也需要进行关闭

    定义三个变量

    Connection conn = null;

    Statement statement = null;

    ResultSet rs = null;

    1.获取Connection连接

    conn = JDBCTools.getConnection();

    2.获取Statement

    statement = conn.createStatement();

    3.创建sql语句

    String sql = “select * from student where SNO = ‘1001’”;

    4.执行查询得到ResultSet

    rs = statement.executeQuery(sql);

    5.处理ResultSet

    while(rs.next()){

    String sno = rs.getString(1);

    String sname = rs.getString(2);

    String ssex = rs.getString(3);

    String sdept = rs.getString(4);

    System.out.print(sno);

    System.out.print(” ” + sname);

    System.out.print(” ” + ssex);

    System.out.println(” ” + sdept);

    }

    6.关闭结果集

    JDBCTools.release(rs,statement, conn);

    这里将关闭和连接的代码封装成了JDBCTools类中,后面有该类完整代码

    执行查询代码如下

    JDBCTest1.java

    package com.atchance.jdbc;

    import java.io.InputStream;

    import java.sql.Connection;

    import java.sql.Driver;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.util.Properties;

    import oracle.jdbc.*;

    import oracle.jdbc.driver.*;

    public class JDBCTest1 {

    public void testReslutSet() throws Exception{

    //获取 sno = 100 的数据表student的记录并打印

    Connection conn = null;

    Statement statement = null;

    ResultSet rs = null;

    try {

    //1.获取Connection

    conn = JDBCTools.getConnection();

    //2.获取Statement

    statement = conn.createStatement();

    //3.准备SQL

    String sql = "select * from student where SNO = '1001'";

    //4.执行查询得到ResultSet

    rs = statement.executeQuery(sql);

    System.out.println(rs);

    //5.处理ResultSet

    while(rs.next()){

    String sno = rs.getString(1);

    String sname = rs.getString(2);

    String ssex = rs.getString(3);

    String sdept = rs.getString(4);

    System.out.print(sno);

    System.out.print(" " + sname);

    System.out.print(" " + ssex);

    System.out.println(" " + sdept);

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    finally{

    //6.关闭结果集

    JDBCTools.release(rs,statement, conn);

    }

    }

    public static void main(String[] arg) throws Exception{

    JDBCTest1 t1 = new JDBCTest1();

    t1.testReslutSet();

    }

    }

    JDBCTools.java

    package com.atchance.jdbc;

    import java.sql.Connection;

    import java.sql.Driver;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.util.Properties;

    public class JDBCTools {

    public static void release(ResultSet rs,Statement statement, Connection con) throws SQLException{

    try {

    if(rs != null)

    rs.close();

    } catch (Exception e1) {

    e1.printStackTrace();

    }

    try {

    if(statement != null)

    statement.close();

    } catch (Exception e) {

    e.printStackTrace();

    }finally{

    if(con != null)

    con.close();

    }

    }

    public static void release(Statement statement, Connection con) throws SQLException{

    try {

    if(statement != null)

    statement.close();

    } catch (Exception e) {

    e.printStackTrace();

    }finally{

    if(con != null)

    con.close();

    }

    }

    public static Connection getConnection() throws Exception{

    String driverClass = "oracle.jdbc.driver.OracleDriver";

    String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL";

    String user = "scott";

    String password = "tiger";

    Driver driver = (Driver)Class.forName(driverClass).newInstance();

    Properties info = new Properties();

    info.put("user", user);

    info.put("password", password);

    Connection connection = driver.connect(jdbcUrl,info);

    return connection;

    }

    }

    “`

    展开全文
  • 上篇文章已经使用Statement实现了对数据库的增删改操作,接下来使用ResultSet结果集执行查询操作 步骤如下: ResultSet:结果集.封装了使用JDNC进行查询的结果 1.调用Statement对象的executeQuery(sql) 可以得到...
  • 数据库基本访问格式 Class.forName(“JDBC驱动程序"); Connection con= DriverManager.getConnection(url); Statement stmt=conn.createStatement(结果集类型,结果集并发性);...ResultSet rs...
  • 一般的数据库中,DATE字段仅仅表示日期,不包括日期信息,而Oracle数据库中的DATE数据类型是包括日期、时间的,对于不同的Oracle jdbc驱动版本,对于该问题的处理都有些区别,如果你使用9i或者11g的驱动程序,可能...
  • JDBC2.0后提出了三种不同的cursor类型,用户代码可以在创建Statement指定cursor类型,如下: Statement createStatement( int ...ResultSet.TYPE_FORWARD_ONLY  默认的cursor类型,仅仅支持向前forward,
  • Java操作数据库: 接口 ResultSet ...ResultSet 接口提供用于从当前行获取列值的获取 方法 ...ResultSet 对象具有指向其当前数据行的光标。...false,所以可以在 while 循环中使用它来迭代结果集。 ...
  • http://stackoverflow.com/questions/1170548/get-resultset-from-oracle-stored-procedure 转载于:https://www.cnblogs.com/weeky/p/5366525.html
  • 使用ResultSet.next()执行含有rownum的SQL语句速度缓慢
  • CallableStatement调用Oracle存储过程返回结果集(ResultSet).doc
  • 使用ResultSet更新数据库

    千次阅读 2009-01-08 18:41:00
    package book.database;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class UpdateWithResultSet { public static void update
  • 出现提示信息,无法从 PL/SQL中 ResultSet 使用 next,好像是这个问题,   使用下面的方式可以解决问题   cstmt.setString(1, "2013"); cstmt.setString(2, "2"); cstmt.setString(3, &...
  • 使用Hibernate分页器时,习惯使用直接把查询语句、页数、分页大小,传给分页器,这样会默认使用last来获取总记录数,效率非常的低。解决方法,很简单,就是用SQL来count查询条件获得总记录的Query,再给Hibernate...
  • package com.test; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import org.junit.Test;...import oracle.jdbc.OracleCallableS...
  • 郁闷死了,这个小问题害的我改了一天,看来还是基本功不到家,希望大家别犯这个错了: 如下代码就会引发这个错误: resultSet = stmt.executeQuery(sqlStr);...这是因为ResultSet的游标指向...
  • ResultSet

    千次阅读 2014-01-15 17:18:07
    这篇文章并没有给出如何使用ResultSet的具体例子,只是从ResultSet的功能性上进行了详细的讲述。希望这篇文章对大家理解ResultSet能够有所帮助。下面就是这篇文章的具体内容。  结果集(ResultSet)是数据中查询结果...
  • 在制作BBS论坛的过程中,根据需要,我计划将数据库的访问、查询操作和查询结果分在两个...private ResultSet executeQuery(String sql) throws SQLException { try{ conn=ds.getConnection(); conn.setAutoCo
  • 出现错误的原因是ResultSet中并没有任何东西,再调用next()方法就会出错,原因可能是oracle创建用户,表没有提交,commit即可 转载于:https://www.cnblogs.com/lin0/p/6929032.html...
  • 通过JDBC获取ORACLE数据库数据时,返回值统一都是ResultSet对象,就像存储过程中的游标,一行一行的读取数据。对于NUMBER和DATE类型的数据,如果java代码中直接用resultSet.getInt()、resultSet.getDate()等,往往会...
  • “could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet” 标识符无效 对于 could not extract ResultSet 可能是 表与字段...
  • 根据JDK JDBC文档,ResultSet::setFetchSize()函数语义为 JDBC 驱动程序设置此 ResultSet 对象需要更多行时应该从数据库获取的行数。如果指定的获取大小为零,则 JDBC 驱动... 但在实际使用Oracle JDBC驱动时,我们开
  • ResultSet接口

    2014-07-03 19:19:06
    ResultSet接口使用SQL中的SELECT语句可以将数据库的全部结果查询出来,在JDBC的操作中数据库的所有查询记录将使用ResultSet进行接收,并使用ResultSet显示内容。 ResultSet接口的常用操作方法  从 consumer 表中...
  • oracle使用方法总结

    万次阅读 2014-12-09 10:29:16
    为一个公司做一个项目,结果他们的项目需要用oracle数据库,所以就用了一个月的时间学习了oracle数据库的使用,并完成了这个项目。在这里总结一下oracle数据库的使用方法。 (一)安装oracle数据库  我的电脑为64位...
  • 在试过多个版本的ojdbc14.jar及class12.jar等oracle驱动后,还是不能获得可更新的ResultSet结果集。根据api所述,下列使用代码应该没错。-------------code------------------new oracle.jdbc.driver.OracleDriver()...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,964
精华内容 17,185
关键字:

oracle使用resultset