SqlConnection
類的方法是如何工作的? 它運行查詢嗎?它可以異步調用嗎?GetSchema方法可以異步工作嗎?
回答
假設你想要的C#的答案,因爲它是你的標籤看到: Use SqlConnection.GetSchema to get Tables Only (No Views)
using System.Data.SqlClient;
和
SqlConnection.GetSchema("Tables");
或
SQLCon.Open();
DataTable tables = SQLCon.GetSchema("Tables");
SQLCon.Close();
我猜這實際上是什麼正在對sys表或信息運行查詢_schema.tables在SQL中打開連接時。 類似:
SELECT * FROM information_schema.tables
或
SELECT * FROM [database].sys.tables
以及類中的其他方法的等效調用。
對於異步調用,您可以在連接字符串
string connectionString = "Data Source=yourDataSource;Initial Catalog=yourCat;Integrated Security=true;Asynchronous Processing=True;";
這個回答你的問題在使用
Asynchronous Processing=True;
?
我想它從sys表中獲取數據。看看http://msdn.microsoft.com/en-us/library/ms188348.aspx
GetSchema沒有異步實現。 如果您需要該方法的具體細節,請嘗試使用ILSPY。
你可以委託調用「GetSchema」的方法嗎?因爲SQL是事務性系統,我們在c#中使用的並行任務非常不同,甚至可能在sql中不存在。這篇文章中排名最高的答案在解釋這個方面做得很好。
SQL Server (TSQL) - Is it possible to EXEC statements in parallel?
如果您不能運行的getSchema方法異步,因爲該方法只返回一個數據表,你可以針對交替返回同樣的事情數據庫執行查詢。
這個帖子顯示的getSchema返回一個數據表:http://msdn.microsoft.com/en-us/library/ms136365(v=vs.110).aspx
閱讀這個帖子上的言論:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.getschema(v=vs.110).aspx
如果調用的getSchema不止一次,最後一次通話可能覆蓋的第一反應。
如果你能,你可能會在SQL創建一個服務隊列處理「異步執行」,但它是非常複雜的:http://rusanu.com/2009/08/05/asynchronous-procedure-execution/
希望這有助於!
- 1. HTML/AJAX/PHP同步和諧?可以異步工作嗎?
- 2. ado.net CommandBehavior.KeyInfo/getSchema方法
- 3. 異步方法無法正常工作
- 4. Bootbox.confirm可以同步工作嗎?
- 5. 轉換異步方法,以非異步
- 6. 可以將事件x:綁定到異步任務方法嗎?
- 7. 我可以使用ToMethod的Ninject綁定的異步方法嗎?
- 8. 可以不等待異步方法調用嗎?
- 9. WCF客戶端:可以同時調用異步方法嗎?
- 10. 可以在自定義ActionResult中使用void異步方法嗎?
- 11. 等待太慢;異步方法可以忽略取消嗎?
- 12. 通過的getSchema()方法
- 13. 方法可以返回異常嗎?
- 14. 異步方法中的異步方法
- 15. 異步操作方法
- 16. 製作異步方法
- 17. 是否可以在非異步方法中調用awaitable方法?
- 18. 這是異步調用同步方法的正確方法嗎?
- 19. jQuery - 線程/異步可以完成嗎?
- 20. 我可以異步UIImageJPEGRepresentation writeToFile嗎?
- 21. 如何從非異步方法異步調用異步方法
- 22. 我可以在Dart中異步調用非異步函數嗎?
- 23. 會在nodejs中異步工作嗎?
- 24. 異步調用後cudaFree工作嗎?
- 25. 異步方法
- 26. 異步方法?
- 27. 異步方法
- 28. 從同步塊調用此同步方法可以嗎?
- 29. 春季交易可以不同步一個同步方法嗎?
- 30. 我應該公開異步方法嗎?
是否意味着所有的連接方法將被異步執行? – Yakov
我不知道細節,但我會承認是的。 您可以嘗試閱讀http://msdn.microsoft.com/en-us/library/windows/desktop/ms724368(v=vs.85).aspx – JPK
但它並不意味着您的代碼將生成連接異步只是因爲這個設置,它只是意味着它被允許。如果不允許,那麼它會保持連接,直到前一個關閉,或者如果您嘗試打開一個打開的連接時發生錯誤(我沒有嘗試過,所以我不知道)。 如果您的代碼一次開始和結束一個那麼它仍然是一個線性過程,所以你在問如何爲並行處理建立一個線程池?或者只是它允許異步? – JPK