首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用vb.net vba向mysql插入数组

问使用vb.net vba向mysql插入数组
EN

Stack Overflow用户
提问于 2014-08-20 19:27:40
回答 1查看 1.2K关注 0票数 0

我已经检索所有数据从互联网到一个二维数组,我知道如何使用vba记录集,并通过过滤器和更新使用循环。下面是vba代码的一部分。

困难的问题是:

代码语言:javascript
复制
Using cmd As New MySqlCommand("INSERT INTO `calls` (`CID`, `ctype`) VALUES (@CID, @ctype)", cnn)

这使我无法在数组中使用任何循环并相应地进行更新。

代码语言:javascript
复制
cmd.Parameters.Add ('@CID').value = arrValue(i,j)

我希望可以在以下几个方面这样做:

代码语言:javascript
复制
for x = 0 to ubound(arrValue,0)
      for y = 0 to ubound(arrValue,1)
          .fields(arrHeader(y) = arrValue(x,y)
      next y
   next x

假设i是要更新的n,j=标头的值。

vba提取液:

代码语言:javascript
复制
    With rs
            'Worksheets(strWsName).Activate
            'iLastRow = Worksheets(strWsName).Cells(65535, 1).End(xlUp).row              'column B, column 2
            For i = 0 To UBound(arrValue, 1)
                    Debug.Print "Updating " & i + 1 & " of " & UBound(arrValue, 1) + 1 & " news ..." ' of " & strCodeAB & " ..."
                    'Start looping the news row
                    strNewsID = arrValue(i, 1) 'Worksheets(strWsName).Range(ColRefNewsID & i).Value
                    If strNewsID = "" Then
                        Debug.Print i - 1 & " news is updated to database"
                        i = UBound(arrValue, 1)
                    Else
                        strFilter = "fID='" & strNewsID & "'"
                        rs.Filter = strFilter
                        If rs.EOF Then
                            .AddNew 'create a new record
                            'add values to each field in the record
                            For j = 0 To UBound(arrTitle_ALL)
                                '20140814
                                strFieldValue = .Fields(arrAccessField(j))
                                strNewValue = arrValue(i, j)
                                If IsNull(strFieldValue) And strNewValue = "" Then
                                Else
                                    .Fields(arrAccessField(j)) = arrValue(i, j) 'Worksheets(strWsName).Cells(i, j + 1).Value
                                End If
                            Next j
                            On Error Resume Next                                        '***************
                            .Update 'stores the new record
                            On Error GoTo 0
                            iCounterNewsAdded = iCounterNewsAdded + 1
                            glcounterNewsAdded = iCounterNewsAdded
                        Else

下面的帖子似乎和我的要求相似,但我不知道该怎么做。reference

EN

回答 1

Stack Overflow用户

发布于 2014-08-20 22:47:49

您提到的post (使用IN()命令)在WHERE子句中工作,但它对值无效。MySQL无法传递数组,因此需要遍历数组并运行多个INSERT语句:

代码语言:javascript
复制
for y = 0 to ubound(arrValue,1)
    cmd.Parameters.AddWithValue(@CID,arrValue(0,y))
    cmd.Parameters.AddWithValue(@ctype,arrValue(1,y))
    cmd.ExecuteNonQuery
next y
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25412919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档