2011-07-16 15 views
0

我正在使用Visual Studio 2008和SQL Server,目前我有一個使用ADO的連接,但想要檢索表的列數...使用_bstr_t和ADO獲取C++中的列數

這裏是我

/*CODE FOR connecting to database**/ 

/*query to know number of columns in table*/ 
_bstr_t sSQLd="Select Count(*) From INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME='[dbo].[mytable]';"; 


/*define variable to hold number of columns and 
print number of coulms as an integer 
*/ 
int COLS_PER_ROW = wcstod(sSQLd, NULL); 
printf("COLS_PER_ROW: %d", COLS_PER_ROW); 

它打印0雖然有我的表 20列如何解決查詢或邏輯?

+2

我看不到你正在執行該SQL;您似乎試圖將查詢本身轉換爲數字。這將是零。 –

+0

@Roger Lipscombe:我如何補充說明,爲了用'Command.Execute()'執行'count',必須添加什麼指令? – cMinor

回答

1

我覺得這個MSDN本文中的示例將幫助:

所涵蓋的字符串類型包括字符*,爲wchar_t *,_bstr_t, 的CComBSTR,CString的:How to: Convert Between Various String Types

從文章引述,basic_string和System.String。從_bstr_t

轉換爲wchar_t*char*,然後用strtol()/wcstol()將其轉換爲long

+0

我在您提供的鏈接中搜索,發現沒有直接的方法將'_bstr_t'轉換爲'int',您建議如何轉換?也許使用'atoi()' – cMinor

+0

如果你安裝了Boost,我會建議使用'boost :: lexical_cast <>'(http://www.boost.org/doc/libs/1_47_0/libs/conversion/lexical_cast.htm )或者使用'strtol()'(http://msdn.microsoft.com/en-us/library/w4z2wdyc%28v=vs.71%29.aspx) – yasouser

+0

抱歉,我沒有提升... – cMinor

相關問題