VB6.0中如何把数组存如数据库中

这几天在做一个数据采集的上位机软件,设想把采集的数据存入数据库(每次采样1000个数据)。网上找了一下没有很好的答案,今天花了点时间做了个试验程序,代码如下:(调试通过)

 

'先在Access表中建一个字段类型为OLE的字段

    Dim adoConn As New ADODB.Connection
    Dim ListRS As New ADODB.Recordset
    Dim a(1000)
    Dim b(1000)

Private Sub Form_Load()

Dim c as Double
adoConn.Open "连接数据库字串。。。"
    For i = 0 To 1000
        c = -i / 100
        'a()为要存的数组,数据类型为文本。
        '本想做二进制的但是在vb中Double数据用Hex()转换有问题,还没找到简洁的方法,无奈只好用文本格式(固定长度)。
        '注意:必须固定长度
        a(i) = IIf(c >= 0, Format(c, "+000.000"), Format(c, "000.000"))
    Next
End Sub

' 保存数组到数据库
Private Sub Command1_Click()
        strsql = "select * from a"
        ListRS.Open strsql, adoConn, adOpenStatic, adLockOptimistic
        ListRS.AddNew        '新增一条记录
        For i = 0 To UBound(a)
                ListRS.Fields("testdata").AppendChunk a(i)   'a()是数组名
        Next i
'        ListRS.Fields("testdata").Value = a
        ListRS.Update
 

          '完成后关闭对象
        ListRS.Close

End Sub

'从数据库中读出存储的数组
Private Sub Command2_Click()
    strsql = "select * from a"
    ListRS.Open strsql, adoConn, adOpenStatic, adLockOptimistic
    PackageSize = 16 '每个数据的长度
    lngActualSize = ListRS.Fields("testdata").ActualSize '数据库中二进制字段的数据长度
    lChunkCount = lngActualSize \ PackageSize            '求出数据的个数
    '逐个读出存储在数据库中的数据
    For i = 0 To lChunkCount - 1
    b(i) = ListRS.Fields("testdata").GetChunk(PackageSize)
    Next
   
    For i = 0 To 1000
        Debug.Print b(i)
    Next
    ListRS.Close
End Sub

 

你可能感兴趣的:(VB6.0)