使用vb.net vs vba将数组插入mysql
我已经从互联网上检索到一个二维数组中的所有数据,我知道如何使用vba记录集和使用循环进行过滤和更新。下面是vba中的部分代码 难点在于:使用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) 我希望这可以通
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)感谢您的贡献。