我有一个开发,我用Com dll与Centura SQLBase进行通信:
COM DLL Code
adaptor.SelectCommand() = New SQLBaseCommand("SELECT COMPANY_ID,COMPANY_NAME FROM COMPANY", myConnection)
Dim ds = New DataSet()
adaptor.Fill(ds, "COMPANY")
Dim myArray As New ArrayList
For Each row As DataRow In ds.Tables(0).Rows
myArray.Add(row)
Next
MsgBox(myArray(1).Item(0)) //This shows 102
MsgBox(myArray(1).Item(1)) //This shows Maui Mu-Mus
Return myArray
所以myArray
存储正确的值;但是在我的MVC控制器中,我得到了一个包含23行的数组列表(很好),但所有这些都是空的。
这是我的Controller Code GET: /Gupta/GetCiudades
Function GetCiudades() As JsonResult
Dim objConn As Object
objConn = Server.CreateObject("TestGupta.ComClass1")
Dim ciudadJson As ArrayList = objConn.getCompanies()
Return Json(ciudadJson, JsonRequestBehavior.AllowGet)
End Function
Ajax Code
:
$.getJSON("Gupta/GetCiudades", null, function (ciudades) {
ciudades = (JSON.stringify(ciudades));
console.log(ciudades);
});
console.log Result:
[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]
问题是:如果在com对象中显示正确的值,那么为什么在控制器中行是空的?
答案 0 :(得分:0)
<强>固定强>
Com +代码:
Public Function getCompanies()
Dim myConnection As SQLBaseConnection = New SQLBaseConnection()
myConnection.ConnectionString = getConn ' Obtenemos la cadena de conexion desde el get
'Abrimos la conexion con Gupta
myConnection.Open()
Dim adaptor = New SQLBaseDataAdapter
adaptor.SelectCommand() = New SQLBaseCommand("SELECT COMPANY_ID,COMPANY_NAME FROM COMPANY", myConnection)
Dim ds = New DataSet()
adaptor.Fill(ds, "COMPANY")
myConnection.Close()
Return ds
End Function
控制器调用
Dim ds = objConn.getCompanies()
Dim arrayInformaticos As New ArrayList
For i = 0 To ds.Tables(0).Rows.Count - 1
arrayInformaticos.Add(New Informatico(ds.Tables(0).Rows(i).Item(0), ds.Tables(0).Rows(i).Item(1)))
Next
Return Json(arrayInformaticos, JsonRequestBehavior.AllowGet)
基于控制器中对象的ArrayList的解决方案,现在Com方法返回一个数据集。