ADO vs JDBC

BluePenguin 2003-06-10 02:27:02
都取10万条
JDBC:1772ms
ADO:2063ms

都取5万条
JDBC:1001
ADO:1032

都取1万条
JDBC:511
ADO:250

都取1000条
JDBC:280
ADO:40
...全文
59 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
BluePenguin 2003-06-12
  • 打赏
  • 举报
回复
移到数据库专区,应该有人关心吧
BluePenguin 2003-06-11
  • 打赏
  • 举报
回复
大家好像不是很关心这个话题呀
brandyChen 2003-06-10
  • 打赏
  • 举报
回复
GZ
BluePenguin 2003-06-10
  • 打赏
  • 举报
回复
大家能说说为什么JDBC在小数据量的时候比ADO慢很多,而到了5万条以后,JDBC反而比ADO快了呢?
BluePenguin 2003-06-10
  • 打赏
  • 举报
回复
java的代码

package bluepenguin.jdbc;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.Connection;

public class testResultSet {
public static void main(String[] args) {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection(
"jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=workspace","sa","");
long t1=System.currentTimeMillis();
PreparedStatement pstmt=conn.prepareStatement("select id,stkcd,trddt from dalyr");
pstmt.setFetchSize(1000);
pstmt.setMaxRows(50000);
ResultSet set=pstmt.executeQuery();

//long t1=System.currentTimeMillis();
int cols=set.getMetaData().getColumnCount(),j;
Object obj;
j=0;
while(set.next()){
j++;
for (int i=1;i <= cols;i++) {
obj=set.getObject(i);
}
}
System.out.println("fetch "+j+" rows in time:"+(System.currentTimeMillis()-t1)+"ms");
}
catch(Exception ex) {
System.out.println(ex);
}
}
}
moonyuezhao 2003-06-10
  • 打赏
  • 举报
回复
恩,知道了。
BluePenguin 2003-06-10
  • 打赏
  • 举报
回复
VB的代码,其中a.udl的连接字符串是:"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=zengjiyue;Initial Catalog=Workspace;Data Source=."

Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Form_Load()
Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
cnn.Open "file name=c:\a.udl"
Dim t1 As Long, FieldCount As Long, i As Long

rs.MaxRecords = 50000
rs.CacheSize = 1000
t1 = GetTickCount()
rs.Open "select id,trddt,stkcd from dalyr", cnn, adOpenStatic, adLockReadOnly, adCmdText
FieldCount = rs.Fields.Count
rs.MoveNext
While Not rs.EOF
For i = 0 To FieldCount - 1
obj = rs.Fields(i).Value
Next i
rs.MoveNext
Wend
MsgBox GetTickCount() - t1
End Sub

Private Sub Form_Unload(Cancel As Integer)
Set cnn = Nothing
Set rs = Nothing
End Sub

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧