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 LongPrivate 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 SubPrivate Sub Form_Unload(Cancel As Integer)
    Set cnn = Nothing
    Set rs = Nothing
End Sub

解决方案 »

  1.   

    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);
        }
      }
    }
      

  2.   

    大家能说说为什么JDBC在小数据量的时候比ADO慢很多,而到了5万条以后,JDBC反而比ADO快了呢?