2011-07-16 30 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); 

私のテーブル で20列が、私は、クエリまたはロジックを修正するにはどうすればよいがありますが、それは0を出力します?

+2

私はあなたがそのSQLの実行を参照していません。クエリ自体を数値に変換しようとしているようです。それはゼロになるでしょう。 –

+0

@Roger Lipscombe:どのように追加するのですか?Command.Execute()で 'count'を実行するためにどの命令を追加する必要がありますか? – cMinor

答えて

1

私は、このMSDNの記事の例が役立つと思う:記事から引用How to: Convert Between Various String Types

覆われている文字列の型がchar含める*、wchar_t型*、_bstr_t、 CComBSTR、CStringの、basic_string、およびSystem.Stringです。

longに変換するstrtol()/wcstol()を使用し、その後_bstr_tからwchar_t*またはchar*に変換します。

+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

関連する問題