Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用vb.net vs vba将数组插入mysql_Mysql_Arrays_Vb.net - Fatal编程技术网

使用vb.net vs vba将数组插入mysql

使用vb.net vs vba将数组插入mysql,mysql,arrays,vb.net,Mysql,Arrays,Vb.net,我已经从互联网上检索到一个二维数组中的所有数据,我知道如何使用vba记录集和使用循环进行过滤和更新。下面是vba中的部分代码 难点在于: Using cmd As New MySqlCommand("INSERT INTO `calls` (`CID`, `ctype`) VALUES (@CID, @ctype)", cnn) 这使得我无法通过数组使用任何循环并进行相应的更新 cmd.Parameters.Add ('@CID').value = arrValue(i,j) 我希望这可以通

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

难点在于:

Using cmd As New MySqlCommand("INSERT INTO `calls` (`CID`, `ctype`) VALUES (@CID, @ctype)", cnn)
这使得我无法通过数组使用任何循环并进行相应的更新

cmd.Parameters.Add ('@CID').value = arrValue(i,j)
我希望这可以通过以下方式实现:

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的摘录:

    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
下面的帖子似乎和我的要求很相似,但我不知道怎么做。 [参考]

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

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

是否可以像我在vba中使用MySQL一样使用vba like.fields('field name')=arrvalue(x,y)这样使用数据集。MySQL不提供传递数据集/数据表或数组的方法。而且,你的要求毫无意义。在单个记录/列中需要X个值。也许您需要一个逗号分隔的字符串。顺便说一句,我已经将逗号分隔的字符串传递给SP,然后在SP中解析它们,并创建了多个记录,但没有其他方法。只是为了澄清,X不是新闻->arrValue(X,1-13),表示第X条新闻,14个字段有14个值。目前,在我的vba到mysql中,这一个运行良好,我明白了为什么如果代码运行良好,那么它毫无意义。此外,对于insert-into,您的意思是我可以将每一条新闻的数组转换为逗号分隔的字符串,以便我可以执行以下操作:strAllVAlues=“'ID1','Equity'”(“insert-Int
调用
CID
ctype
)VALUES(strAllVAlues)”,cnn)感谢您的贡献。