1

我正在尝试使用多线程来连接 CData 驱动程序。是否可以并行处理 CData 中的数据。

OdbcConnection conn = new OdbcConnection();
conn.ConnectionString = "xxxx";
Task task1 = Task.Factory.StartNew(() => ReadData(conn));
Task task2 = Task.Factory.StartNew(() => ReadData(conn));
Task task3 = Task.Factory.StartNew(() => ReadData(conn));
Task task4 = Task.Factory.StartNew(() => ReadData(conn));
Task task5 = Task.Factory.StartNew(() => ReadData(conn));
public static void ReadData(OdbcConnection con)
        {
                con.Open();
                // code
         }

请让我知道有任何解决方案。提前致谢。

4

1 回答 1

0

这个有可能。如果使用 Other 属性设置 OAuthSettingsLocation 属性,则可以执行数据的并行处理。您可以在 DSN 中设置该属性,也可以在无 DSN 连接中动态设置该属性(请参见下面的代码示例)。

OAuthSettingsLocation - 保存 OAuth 值的设置文件的位置。这可以是驱动程序具有读/写权限的磁盘上的任何位置。

使用 DSN 管理器执行 OAuth

在使用驱动程序之前,您需要通过服务进行身份验证。为此,您可以使用 DSN 向导中的测试连接。

  1. 打开 ODBC 数据源管理器(从开始菜单中,键入“ODBC”)
  2. 使用驱动程序选择或创建新的 DSN。
  3. 在其他属性中设置 OAuthSettingsLocation 属性,然后单击测试连接。(系统将提示您在新的浏览器窗口中对服务进行身份验证。)

代码示例

string driver = "QuickBooksOnline 的 CData ODBC 驱动程序";
string oauthSettingsLocation = "C:/users//AppData/Roaming/CData/QuickBooksOnline ODBC 驱动程序";
string connString = "DRIVER={" + driver + "};Other=OAuthSettingsLocation=" + oauthSettingsLocation;
任务task1 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString)));
任务task2 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString)));
任务task3 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString)));
任务task4 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString)));
任务task5 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString)));

笔记

CData Software 还制作 ADO.NET 提供程序,可以在 .NET 应用程序中提供更原生的体验。

于 2018-01-26T19:29:24.913 回答