#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <string>
using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;
char a;
int main(void)
{
String^ str;
SqlConnection^ sqlConn = gcnew SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\○○\\test.mdf;Integrated Security=True;User Instance=True");
sqlConn->Open();
str = "Select test FROM Table1";
SqlCommand^ sqlCmd = gcnew SqlCommand(str,sqlConn);//
SqlDataReader^ ExecuteReader ();
sqlConn->Close();
}
int sub()
{
a = ExecuteReader;
printf (a,"表示テスト\n");
return 0;
}
の構文でSQL ServerへSELECT文を送り、そこで得た結果を
表示しようと思ったのですが
1>select-test.cpp
1>.\select-test.cpp(28) : error C2065: 'ExecuteReader' :
定義されていない識別子です。
1>.\select-test.cpp(29) : error C2664: 'printf' : 1 番目の引数を
'char' から 'const char *' に変換できません。
(新しい機能 ; ヘルプを参照)
1> 整数型からポインタ型への変換には
reinterpret_cast、C スタイル キャストまたは
関数スタイル キャストが必要です。
と2つのエラーを返されてしまいました。
開発環境は
OS XPのHomeEditon
Visual C++ ExpressEdition
SQL Server 2005 Express
です。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
ごめんなさい ・・・ SqlCommandにExecuteはありませんね
SqlDataReader^ exeReader = sqlCmd->ExecuteReader();
ですね
subの呼び出しを
sub( exeReader );
とします
関数sub側は
void sub( SqlDataReader ^objRd )
{
// DBより取得したレコードを取得する
while( objRd->Read() ) {
Console::Writeln( L"{0}", objRd[0] );
}
}
といった具合にします
C++/CLIでは printfより Console::WriteやWiltelnのほうが親和性がいいでしょう
No.1
- 回答日時:
関数subで ExecuteReaderを使いたいなら 引数に持たせるかグローバル変数にしましょう
void sub( SqlDataReader^ objRd )
といった具合です
SqlCommand^ sqlCmd = gcnew SqlCommand(str,sqlConn);//
SqlDataReader^ ExecuteReader ();
は
SqlDataReader^ exeReader = sqlCmd->Execute();
といった具合でしょう
printfに関するエラーは VC++2005以降はUnicedeが標準の文字セットになっています
プロジェクト > プロパティの 構成プロパティ > 全般の
文字セットを『マルチバイト文字セットを使用する』に変更するか
文字列の前に Lをつけます
printf( L"表示テスト\n" );
といった具合です
printf( a, L"表示テスト\n" );
は何を期待しているコードでしょう
aはSqlDataReaderのオブジェクトのように思います
aのデータベースから取得したデータを表示したのであれば
printf( L"表示テスト %s \n", a[0] );
などといった具合です … フィールド(列)の内容により %sは適宜修正してください
すみません、まだ初心者なので、よく分からないところが何点か…
今、こんな形にしたのですが
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <string>
using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;
const wchar_t a=0;
int main(void)
{
String^ str;//指令格納単語作成
SqlConnection^ sqlConn = gcnew SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\卒研\\test.mdf;Integrated Security=True;User Instance=True");
//↑接続先指定
sqlConn->Open();//サーバOPEN
str = "Select test FROM Table1";//指令格納
SqlCommand^ sqlCmd = gcnew SqlCommand(str,sqlConn);//
SqlDataReader^ exeReader = sqlCmd->Execute();
sqlConn->Close();
}
void sub(SqlDataReader^ objRd)
{
a = ExecuteReader;
printf( L"test\n",a );
return;
}
この構文でチャレンジしてみたところ
1>select-test.cpp
1>.\select-test.cpp(20) : error C2039: 'Execute' :
'System::Data::SqlClient::SqlCommand' のメンバではありません。
1> c:\windows\microsoft.net\framework\v2.0.50727\system.data.dll :
'System::Data::SqlClient::SqlCommand' の宣言を確認してください。
1>.\select-test.cpp(26) : error C2065: 'ExecuteReader' :
定義されていない識別子です。
1>.\select-test.cpp(27) : error C2664: 'printf' : 1 番目の引数を
'const wchar_t [6]' から 'const char *' に変換できません。(新しい
機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には
reinterpret_cast、C スタイル キャストまたは
関数スタイルのキャストが必要です。
と返されてしまいました。
あと、Executeについて調べると、ADOというものを見たのですが…
access、というのでしょうか。
私のパソコンには入っていないので、初心者の偏見かもしれませんが
どうやら使えない?のかな…と心配になっています…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
#defineが使用するメモリ領域に...
-
ファイル操作で全角空白を消す
-
printf による16進表示について
-
終了条件Ctrl+zについて,結果表...
-
空白を含んだ文字列がうまく格...
-
C言語のプログラムで、途中で止...
-
char型2つを結合し、short型に...
-
Ç言語でファイルサイズを変更す...
-
矢印キーを押下してコンソール...
-
数字以外が入力されたらエラー...
-
DWORDの実際の型は何でしょうか
-
C言語での引数の省略方法
-
信頼区間の1.96や1.65ってどこ...
-
「指定されたキャストは有効で...
-
2÷3などの余りについて
-
#define _CRT_SECURE_NO_WARNIN...
-
プログラミング
-
Aの値からBの値を除するとは??
-
プログラムでの数字につく”f”の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
C言語で複数列のデータを1列の...
-
#defineが使用するメモリ領域に...
-
printf による16進表示について
-
空白を含んだ文字列がうまく格...
-
C言語のプログラムで、途中で止...
-
プログラミングの授業の課題です
-
char型2つを結合し、short型に...
-
C言語でのCSVファイルの読み出...
-
矢印キーを押下してコンソール...
-
【C言語】全角文字の配列を、全...
-
エラーについて質問です。
-
リストの作成と出力(C言語)
-
バイナリファイル(画像)のよみ...
-
[C]セグメンテーションエラー:...
-
WinInetのInternetOpenUrl関数...
-
c言語で文書を読み込み、単語の...
-
VC++でSQLへSELECT文を送ったの...
-
受信データから必要な部分のみ...
-
reallocでエラー
おすすめ情報