数据库里有一个表,里面的数据量非常大,大概好几G到上十G之多,我只想知道表的字段名和字段数目,而对于表的数据却并不关心。以前的做法是(VB):
str="select * from table"
set rs=cn.open str
FieCount=rs.Fields().Count
For i = 0 to FidCount - 1
    FieName(i)=rs.Fields(i).Name
Next
可是,因为表实在太大,所以在执行rs=cn.open str这一句的时候,时间长的无法忍受。
后来,在SQL Plus(Oracle)里执行desc table语句可以返回,可是在VB里EXCUTE这一条语句却认为语句非法。
我曾经试图在SQL语句中加入where子句,控制rs的返回值数量,可是我却不知道这样做是不是还是检索表的所有数据,效率又没有实质性的提高。而到公司现场去很麻烦,实际测试一次效率的高低也不太可能。
请问:我应该咋办?请高手指点迷津

解决方案 »

  1.   

    '工程->引用Microsoft ActiveX Data Objects 2.x Library Private Sub Command1_Click()
    Dim adoCN   As New ADODB.Connection                'Access的
    Dim strCnn   As New ADODB.Recordset
                 
       str1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" & ";Persist Security Info=False"
       adoCN.Open str1
             
       Set rstSchema = adoCN.OpenSchema(adSchemaTables)
         
       Do Until rstSchema.EOF
               out = out & "Table  name:  " & _
                   rstSchema!TABLE_NAME & vbCr & _
                   "Table  type:  " & rstSchema!TABLE_TYPE & vbCr
               rstSchema.MoveNext
       Loop
       rstSchema.Close
         
       adoCN.Close
    Debug.Print outEnd SubPrivate Sub Command2_Click()
    Dim adoCN   As New ADODB.Connection                'Excel的
    Dim strCnn   As New ADODB.Recordset
                 
       str1 = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & App.Path & "\Book1.xls;" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"
       adoCN.Open str1
             
       Set rstSchema = adoCN.OpenSchema(adSchemaTables)
         
       Do Until rstSchema.EOF
               out = out & "Table  name:  " & _
                   rstSchema!TABLE_NAME & vbCr & _
                   "Table  type:  " & rstSchema!TABLE_TYPE & vbCr
               rstSchema.MoveNext
       Loop
       rstSchema.Close
         
       adoCN.Close
    Debug.Print outEnd Sub
      

  2.   

    好像SQL里有一个可以拷贝表的结构的命令。。忘了。。
      

  3.   

    to:RUKYO(蠢蠢的男子汉) 
    我要的是表的字段名,而这样获取的恐怕是数据库的结构吧?
    期待着您的答复……
      

  4.   

    str="select top 0 * from table"
    set rs=cn.open str
    FieCount=rs.Fields().Count
    For i = 0 to FidCount - 1
        FieName(i)=rs.Fields(i).Name
    Next
      

  5.   

    str语句可以使用条件检索,不需要全部查询
      

  6.   

    哦,不好意思,没看清题目。按frankwong(黄梓钿--快乐ing新爸爸^_^) 的就行了
      

  7.   

    就是么,添加一个否定条件就可以了,用ADO插入数据也可以这么做select * from TableName where  1>2
      

  8.   

    了解了
    或者直接
    select * from tablename where false