所以我知道一些相对的差异,即ResultSet与数据库有"开放连接",而RowSet以"断开连接"的方式工作.
但这几乎是我理解的(可能是不正确的:)
那么我的问题是 - 在什么情况下比另一种更可取?他们各自的优势/劣势是什么?
从我的感觉是RowSet,在断开模式下工作,特别是对于"只读"查询,在高度并发的系统中会有更好的性能.那是对的吗?如果是这样的话,可以说RowSet总是比ResultSet更适合只读查询吗?
如果我正确迭代RowSet不会抛出SQL异常,但这是一个好处吗?另一个是RowSet是可序列化的.但我担心的主要是从绩效角度来看会有什么选择呢?
有任何想法吗?我的知识中有一些缺失,显而易见:)
我问的原因是我想在实现Spring-Jdbc的ResultSetExtractor接口与在处理一些数据时返回SqlRowSet之间做出选择.这个问题让我很好奇如何决定什么时候选择,除了扔硬币:)
直到今天,我还在ResultSet处理查询结果时.但今天我读了一些关于RowSet并且CachedRowset我意识到他们可以更好地服务于我的目的.而在所有的例子我读到这里RowSet和CachedRowSet被简称为对象,当我尝试过自己在我的代码,我意识到那些接口,并在他们的例子使用这些接口的一些实现.
现在我的问题是我在哪里找到这些实现,是否有官方的东西?
我需要下载它们还是它们带有JDK?
我试图用以下代码查询MySQL数据库:
'declare the variables
Dim Connection
Dim Recordset
Dim SQL
'declare the SQL statement that will query the database
SQL = "SELECT * FROM CUSIP"
'create an instance of the ADO connection and recordset objects
Set Connection = CreateObject("ADODB.Connection")
Set Recordset = CreateObject("ADODB.Recordset")
'open the connection to the database
Connection.Open "DSN=CCS_DSN;UID=root;PWD=password;Database=CCS"
Recordset.CursorType=adOpenDynamic
'Open the recordset object executing the SQL statement and return records
Recordset.Open SQL,Connection
Recordset.MoveFirst
If Recordset.Find ("CUSIP_NAME='somevalue'") Then
MsgBox "Found"
Else
MsgBox "Not Found"
End If
'close the …Run Code Online (Sandbox Code Playgroud) 我现在争取让一个IN参数在LIKE语句中工作几个小时!我使用的是CachedRowSet,我理解它应该遵循与PreparedStatement相同的规则.
这是基本查询:
CachedRowSet cache;
String sql = "SELECT x " +
"FROM Y " +
"WHERE z LIKE '?__'"
cache.setCommand(sql);
cache.setString(1, "someString");
Run Code Online (Sandbox Code Playgroud)
someString是一个已知的id,但数据库(顺便说一下是PostgreSQL)条目有一个未知的2个字符后缀.
rowset ×4
java ×3
jdbc ×2
cachedrowset ×1
postgresql ×1
recordset ×1
resultset ×1
spring ×1
spring-jdbc ×1
sql ×1
vbscript ×1