VB.NET从ODBC获取数据作为JSON

时间:2018-03-17 00:09:58

标签: json vb.net odbc datareader

我对.NET不是很熟悉,所以我甚至不确定我是否知道如何以正确的方式提出这个问题,因为我不得不相信这是一个常见的用例,但是我的google-fu是可悲的

在PHP中如果我想从数据库中获取数据并将其格式化为JSON,我会使用这样的PDO:

$query = $this->dbConn->prepare("SELECT * FROM Customers");
$query->execute();
$resultsSet = $query->fetchALL(PDO::FETCH_ASSOC);
foreach ( $resultsSet as $row  ){
    $json = json_encode( $row );
    //POST $json to web service or something
}

这将以{“列名”:“列值”,“列名称”:“列值”,...}的格式创建JSON,这正是我想要的。

我如何在VB.NET中执行此操作?我可以使用OdbcDataReader从我的数据源中检索数据,如下所示:

Dim Conn As New OdbcConnection("[connection string]")
Dim Cmd As New OdbcCommand("SELECT * FROM Customers", Conn)
Dim Reader As OdbcDataReader
Dim serializer As New JavaScriptSerializer()

Conn.Open()
Reader = Cmd.ExecuteReader()

While (Reader.Read())
    json = serializer.Serialize(Reader).ToString 
    'this doesn't work - returns [{"FieldCount":126},{"FieldCount":126},{"FieldCount":126}...]  
    'POST json to web service
End While

基本上我需要做的是使用该应用程序的ODBC驱动程序直接读取来自遗留应用程序的大约100个相当大的文件(百万条记录),将其转换为JSON并将其发布到远程Web服务。

JSON包含“列名”形式的名称/值对非常重要:“列值”。我愿意接受其他建议。

我正在使用VS 2017,.NET 4.6

1 个答案:

答案 0 :(得分:1)

将Newtonsoft.Json nuget包添加到项目中 而不是读者使用DataAdapter和DataTable

DataAdapter.Fill(DataTable)

然后将DataTable传递给这个小函数

Public Function DataTableToJSONWithJSONNet(table As DataTable) As String
        Dim JSONString As String = String.Empty
        JSONString = JsonConvert.SerializeObject(table)
        Return JSONString
End Function