VB.NET 从 ODBC 获取数据为 JSON

VB.NET get data from ODBC as JSON

我对 .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
}

这将以 {"Column Name": "Column Value", "Column Name": "Column Value", ...} 的格式创建 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 并将其发布到远程网络服务。

重要的是 JSON 包含 "column name" 形式的 name/value 对:"column value"。我愿意接受其他建议。

我正在使用 VS 2017、.NET 4.6

将Newtonsoft.Json nuget包添加到项目中 而不是 reader 使用 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