我正在使用CDynamicAccessor連接到MS SQL Server 2005的C++應用程序。 當我的列是文本或ntext時,CDynamicAccessor :: GetColumnType總是返回DBTYPE_IUNKNOWN。我可以將數據綁定爲ISequentialStream並讀取字節流。但是,如何判斷我正在讀取的列是text還是ntext,因此將字節流解釋爲ASCII或Unicode?如何使用CDynamicAccessor連接到數據庫時告訴列是文本還是ntext?
0
A
回答
0
CDynamicAccessor類將使用DBTYPE_UNKNOWN覆蓋該列的原始DBTYPE值。爲了獲得原始的DBTYPE,我們需要調用GetColumnInfo函數。的如何做到這一點的一個例子是包含在Visual Studio 2008米中的樣品的DynamicConsumer示例應用:
// the following case will handle BLOBs binded as ISequentialStream/IStream pointer
if(dbtype == DBTYPE_IUNKNOWN)
{
// first we have to determine what was the column's type originally reported by the provider
CComHeapPtr<DBCOLUMNINFO> spColumnInfo;
CComHeapPtr<OLECHAR> spStringsBuffer;
DBORDINAL nColumns = 0;
HRESULT hres = rs.CDynamicAccessor::GetColumnInfo(rs.m_spRowset, &nColumns, &spColumnInfo, &spStringsBuffer);
ATLASSERT(SUCCEEDED(hres));
ATLASSERT(col <= nColumns);
DBTYPE wType = spColumnInfo[col-1].wType;
...
}
的替代的解決方案是設置CDynamicAccessor到DBBLOBHANDLING_NOSTREAMS,這似乎導致少得多的複雜的代碼來處理數據加載(你可以在完整的VS2008示例代碼中看到這一點)。 但是,我不確定爲什麼使用流是默認選項,並且如果沒有使用流,還有什麼缺點。
相關問題
- 1. 不能告訴phpactiverecord是否連接到數據庫
- 2. 如何在編譯時告訴項目是程序還是庫?
- 3. 如何檢測連接的數據庫是MariaDB還是MySQL?
- 4. 有人可以告訴我如何使用ColdFusion連接到H2數據庫嗎?
- 5. 如何在連接到mysql時告訴django使用--skip-secure-auth?
- 6. CMD行告訴文件/路徑是本地還是遠程?
- 7. C#數據庫連接使用USING還是不行?
- 8. 如何使用Scripting Bridge'告訴數據庫'我的數據庫''?
- 9. 如何告訴GIT引用是分支還是標籤?
- 10. 如何使用IP而不是「localhost」連接到MySQL數據庫?
- 11. 如何告訴Linq使用哪個數據庫版本
- 12. 我應該使用文本文件還是數據庫?
- 13. 如何提高性能:數據庫還是文本文件?
- 14. 學說:總是告訴我的數據庫不同步使用
- 15. 如何在部署時告訴Rails使用生產數據庫(而不是開發數據庫)?
- 16. 使用PHP配置文件連接到數據庫,而不是PDO連接線
- 17. 如何告訴LinqToSQL在多鍵時使用外連接?
- 18. 創建文本文件好還是保存到數據庫好?
- 19. 我應該使用本地數據庫還是XML文件?
- 20. JavaEE設計... InfoHolders還是直接與數據庫連接?
- 21. 如何創建連接池/數據源而不是連接到SQL數據庫
- 22. SqlConnection - 是遠程還是本地連接?
- 23. 何時使用數據庫連接池
- 24. 如何確認數據庫是Oracle還是使用SQL的版本?
- 25. 這是左連接還是右連接,內部還是外部?
- 26. 如何使用java jdbc連接到本地SQL數據庫
- 27. 如何使用Induction連接到本地SQLite數據庫?
- 28. 如何使用python在本地連接到Mongo數據庫
- 29. 對於文本內容我應該使用文本文件還是數據庫?
- 30. 爲什麼我scrapy總是告訴我 「TCP連接超時」