- 浏览: 94960 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
assasszt:
写的很透彻,厉害!能不能问个 问题:cookie 应该是浏览器 ...
Tomcat之Session和Cookie大揭密 -
赵武艺:
有时间把全部代码贴出来看看,只看这个看不懂?
Ajax请求,利用JFreeChart,页面无刷新画带“map”的图 -
e_soft:
解决办法:
拔了网线就好了,具体什么原因正在查找.
我也在 ...
MyEclipse开发JSP页面假死问题解决办法
连接字符串中碰到的SelectMethod=cursor
关键字: selectmethod=cursor的含义及其使用
今天在数据库连接字符串中看到了selectMethod=cursor
知道了这个用法如下:
作用:以利用服务器端的游标加快速度
使用情况:
1.执行多个Statements的操作的时候用
2.需要手动使用事务的时候使用
以上是在使用sqlserver数据库的连接字符串的时候使用过。
例如:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=071008_03;SelectMethod=cursor
但是今天我将其用在oracle数据库的时候,却报出了一下的错误信息:
Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869824)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
这是个老话题,2002年在使用ejb的bmp就遇到了这个问题
连接数据库成功之后,想在一个事务中初始化多个预处理句柄时报错
dbConn.setAutoCommit(false)
for (int i = 0; i < 5; i++) {
pstmt[i] = dbConn.prepareStatement(strPreSQL[i]);
错误提示:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start manual transaction mode because there are cloned connections
怀疑MS SQL不能在一个事务中建多个预处理句柄
Resolution:
You have to add a property to the pool definition, something to do with selectMode=cursor or selectMethod=cursor. Check the driver documentation. Otherwise the driver will not allow more than one statement per connection at any given time
微软的专家告诉的
This error occurs when you try to execute multiple statements against a SQL Server database with the JDBC driver while in manual transaction mode (AutoCommit=false) and while using the direct (SelectMethod=direct) mode. Direct mode is the default mode for the driver."
import java.sql.*;
import java.io.*;
public class Repro{
public static void main(String args[])
{
try {
Connection con;
Statement s1 = null;
ResultSet r1 = null;
Statement s2 = null;
ResultSet r2 = null;
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = DriverManager.getConnection(
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;SelectMethod=Direct;User=User;Password=Password");
//fix 1
//"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;SelectMethod=Cursor;User=User;Password=Password");
con.setAutoCommit(false);
try {
s1 = con.createStatement();
r1 = s1.executeQuery("SELECT * FROM authors");
//fix 2
//r1.close();
//s1.close();
s2 = con.createStatement();
r2 = s2.executeQuery("SELECT * FROM publishers");
}
catch (SQLException ex)
{
System.out.println(ex);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
用SQL Server驱动一次select很多数据最好在connection string中加上SelectMethod=Cursor,以利用服务器端游标加快速度,其实不只sqlserver,oracle的jdbc,只要使用PreparedStatement,驱动默认就使用游标,sqlserver则不然,必须使用SelectMethod=Cursor才打开游标。
这点在使用jotm时,并且使用Xapool时,必须修改DataSourceFactory,把PreparedStatementPool禁掉,否则记录插的太快了,很可能是游标没来得及关闭
即使不使用jotm,大量向oracle插入数据,例如每毫秒1条,也会引发游标用完,所以大量插入数据时,应该使用oracle的批处理batchupdate.
可惜的是,微软的sqlserver的jdbc驱动不支持这个属性
发表评论
-
版本管理
2010-07-27 11:08 0几个分布式vcs比较 http://blog.csdn.ne ... -
UML工具
2010-07-14 15:51 0Enterprise Architect,java编程思想作者 ... -
设计模式
2010-07-13 13:47 0代理模式 可以在不改变接口的前提下 ... -
java
2010-07-13 13:45 967我们为什么一直选择Java http://blog.cs ... -
eclipse
2010-07-12 18:14 1173eclipse 分屏 http://www.coderanc ... -
在java中利用动态编译实现eval
2008-12-24 04:49 1048我们知道,在很多脚本语言中都有eval涵数,它可以把字符串转换 ... -
Java入门--认识理解Java中native方法
2008-12-25 01:18 1269Java不是完美的,Java的不足除了体现在运行速度上要比传统 ... -
Java的数据类型
2008-12-25 21:36 1157Java的简单数据类型 数据类型 数据类型就 ... -
解读JAVA内存优化编程的三个方法
2008-12-25 21:43 1161一.代码优化 内存会溢出肯定和代码逃不了关系,99 ... -
MemoryMXBean
2008-12-25 21:47 1351本文来源:jdk1.6中文文档 java.lan ... -
JDK1.5新特性介绍
2008-12-26 03:36 891JDK1.5新特性介绍 2004-09-11 00: ... -
java源代码分析----jvm.dll装载过程
2008-12-27 02:37 1384本文来源:http://www.matri ... -
Java 泛型的理解与实现
2008-12-27 04:04 41很多人不知道Java 泛型 ... -
数字格式化
2008-11-02 23:48 775Double sum = 78342 .0d; ... -
JAVA命令说明
2008-12-06 23:04 1904一、运行class文件 执行 ... -
主题:-jar参数运行应用时classpath的设置方法
2008-12-07 04:11 791当用java -jar yourJarExe.jar来运行一个 ... -
SDK、JDK、JRE和JVM的关系
2008-12-14 15:43 1124摘自: http://hi.baidu.com/lxcry ... -
Dom4j的使用(全而好的文章)
2008-12-15 12:23 661Dom4j 使用简介 作者:冰云 iceclo ... -
Antlr入门详细教程
2008-12-18 16:24 2418一、 Antlr 的主要类: ... -
深入浅出CGlib-打造无入侵的类代理
2008-12-18 20:38 592CGlib是什么? CGlib是一个强大的,高性能,高质量的 ...
相关推荐
数据导入与导出工具 jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=szyes;SelectMethod=Cursor; jdbc:mysql://localhost:3306/webbase?useUnicode=true&characterEncoding=UTF-8
户 口 所 在 地:<select name="province1"></select><select name="city1"></select><select name="area1"></select> 工 作 所 在 地:<select name="province2"></select><select name="city2"></select>...
### ArcObjects中Cursor的使用详解 #### 一、引言 在GIS开发领域,特别是使用ESRI提供的ArcObjects SDK时,对于数据的操作...了解并熟练掌握`Cursor`的不同类型及其使用方法,对于GIS领域的开发者来说是非常必要的。
if (select==-1||select) { select = start; fm.richTextBox1.SelectionStart = start; MessageBox.Show("找不到" + str, "记事本"); } } else { marker=select; select = fm.richTextBox1....
- `SelectMethod=Cursor`: 查询方法设置为游标方式。 ##### 4. 创建连接 ```java private static Connection con = null; Statement stmt = null; ResultSet rs = null; public connectURL() { try { if (con ...
form action="" method="post"> <div id="divselect"> 请选择特效分类 <li><a href="[removed];" selectid="1">导航菜单</a></li> <li><a href="[removed];" selectid="2">焦点幻灯片</a></li> <li><a href...
本文实例讲述了python查询sqlite数据表的方法。...cursor.execute("select * from person") rows = cursor.fetchall() for row in rows: print("%s %s %s" % (row["name"], row["age"], row["address"])) conn
省:<select id="Select1"></select> 市:<select id="Select2"></select> 区:<select id="Select3"></select> <script type="text/javascript"> addressInit('cmb', 'cmbCity', 'cmbArea', '陕西', '宝鸡市', '...
存储过程内部使用了一个嵌套查询来过滤和排序数据,并将结果集绑定到输出的Cursor。 ```sql CREATE OR REPLACE PACKAGE TEST IS -- 返回cursor TYPE CURSOR_RESULT IS REF CURSOR; PROCEDURE GET_CURSOR_RESULT...
n = cursor.execute("select * from user") for row in cursor.fetchall(): for r in row: print(r) # 删除数据 sql = "delete from user where name=%s" param = ("aaa") n = cursor.execute(sql, param) print...
cursor.execute("SELECT * FROM hosts") # 获取一行 row_1 = cursor.fetchone() # 获取多(3)行 row_2 = cursor.fetchmany(3) # 获取所有 row_3 = cursor.fetchall() # 重置游标类型为字典类型 cursor = conn....
method=add" method="post"> 书籍名称:<input type="text" name="bookname" /> 书籍作者:<input type="text" name="bookauthor" /> 书籍价格:<input type="text" name="bookprice" /> ...
例如,`<select id="getResultSet" resultType="YourBean">{call your_procedure(#{param1, mode=IN, jdbcType=VARCHAR}, #{resultSet, mode=OUT, jdbcType=CURSOR})}</select>`。 3. **返回多个结果的存储过程**:...
<result name="select">/org/select.jsp <action name="add_input" class="orgAction" method="add"> <result name="success" type="dispatcher">/org/add_input.jsp <action name="add" ...
- 使用`CURSOR`关键字声明游标并指定对应的`SELECT`语句。 - 例如:`CURSOR myCur IS SELECT empno, ename, sal FROM emp;` 2. **打开游标**: - 使用`OPEN`语句打开游标并执行`SELECT`语句。 - 例如:`OPEN ...
Cursor cursor = userDao_check.select(); String str = ""; if (cursor.moveToFirst()) { do { int d = cursor.getColumnIndex(MyDatabase.KEY_ID); String id = cursor.getString(d); ...
cursor_name CURSOR FOR SELECT column1, column2 FROM table_name WHERE condition; ``` - 打开:使用OPEN语句打开游标,准备开始处理结果集。 ```sql OPEN cursor_name; ``` - 提取:使用FETCH语句提取当前行的...
使用Cursor的关键在于调用`selectList`方法时传入`ExecutorType.SIMPLE`或`ExecutorType.BATCH`,并确保返回值类型是`List`的子类,比如`ArrayList`或`LinkedList`,这样MyBatis就会自动启用Cursor模式。 以下是一...
这里的`selectMethod=cursor`参数表示使用游标,这在某些情况下可能有助于处理大量数据,但请注意,游标可能会增加资源消耗,所以在性能敏感的应用中需要权衡使用。 总结来说,解决SQL Server 2005批量更新问题的...
cursor.execute('SELECT * FROM employees WHERE department_id=:dept_id AND salary>:sal', {'dept_id':50, 'sal':1000}) ``` 获取结果 可以使用 `fetchall` 方法获取所有结果,或者使用 `fetchone` 方法获取一行...