VC++でSQL文に条件分岐処理のためのCASE式を埋め込みたいのですが、
詳しく書いてあるHPなどご存知の方、
教えてください。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

質問


分岐とはどのような事を考えていますか?

VC++でSQLを実行する時はなにを使っていますか?
ADOですか?
ODBCですか?

データベースには何をお使いですか?

状況が今一つ掴めませんので補足願います。

この回答への補足

yanmaaさん、ありがとうございます。
ODBC接続で、DB2使っています。
で、その、、、
できちゃったんですよ。

CASE a.xx WHEN 0 THEN b.xx ELSE ' ' END,

と書けばいいみたいです。
その他に書き方ご存知ですか?

補足日時:2001/10/26 17:27
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVC++でSQLへSELECT文を送ったのですが…

#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
です。
よろしくお願いします。

#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,sqlCo...続きを読む

Aベストアンサー

ごめんなさい ・・・ 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のほうが親和性がいいでしょう

Qvc++6.0 と vc++2500

vc++6.0で

ifstream ifs("userkey.dat");
ifs.getline(oc_user1, 63);

となっていてコンパイルできていたのですが

2005にしたら
コンパイルできません
どうしたらコンパイルできますか

6.0と2005の違いを知るには何を読んだらいいでしょうか?

Aベストアンサー

std::ifstream ifs("userkey.dat");
ifs.getline(oc_user1, 63);

としてみてはいかがでしょうか。

QVC++5.0とVC++6.0の違いは?

何がどう変わったんでしょうか?
なんとなく使っているだけなのでぜんぜんわかりません。

簡単にんでいいんで思いつくことを書いてもらえるだけでもうれしいです。


よろしくお願いいたします。

Aベストアンサー

MFCのバージョンが違います。MFCのリファレンスを見れば6で増えた機能が分かります。

例えばブラウザを簡単に作れるCHtmlViewは6でないと使えません。

QVC++6.0からVC++.NETへの変遷について

VC++がようやく分かり出したこの頃ですが、今日本屋に立ち寄ったら、なっ なんとVC++の本がほとんど無くなり、代わりにVC++.NETとVC#ばかりになっていました。

C#はVC++とは違うと聞いていたのですが、読んでみるとVC++.NETもかなり違ってました。
(かなり違うという表現は、各人の状況により意見が異なると思いますが)

私のような本を見ながらコードを打って勉強している初心者にとって、VC++.NETの本ではVC++6.0を動かすことができません。

今から勉強する人や本を買って勉強しようとしている人あるいは、コンパイラを手に入れようとしている人はVC++.NETに移行してしまわざるを得ないのでしょうか?

すでにVC++6.0を十分活用出来ている人も、時代の流れでNETやC#を勉強していかなければならないのでしょうか?

つまり、単なるバージョンアップとは一線をなす変更がなされたということなのでしょうか?

良くご存知の方見解をお願いします。

Aベストアンサー

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したものが無駄になることはありません。
たぶん、.NET環境の開発には、C++よりもC#やVB.NETを利用することが
多くなると思いますが、C++を理解していることはプラスにはなってもマイナスには
なりませんので、頑張って下さい。

.NET関連のサイトを2つご紹介しておきます。ご参考に。
http://www.microsoft.com/japan/msdn/library/default.asp
http://www.atmarkit.co.jp/fdotnet/index.html

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したもの...続きを読む

QVC++6.0からVC++.NET2005へ移植

VC++6.0で作成したプログラムをVC++.NET2005に移植しました。
ビルドを行うと『fatal error LNK1104:ファイル'mfc42.lib'を開くことができません。』のエラーが出てしまいます。
ソリューションのプロパティを見てもどこで「mfc42.lib」の参照を定義しているのか分かりません。
どこで「mfc42.lib」の参照を定義しているのか教えてください。また、対策を教えてください。

Aベストアンサー

VC++.NET2005のエディションをお教えください。
Express Editionでは、リソースエディタがない、
ATL, MFCが使えないなどの制限がいくつか存在します。

また、VC2005などでは.NET Frameworkの開発が前提となっており
WIN32APIを使用する場合などについては、Platform SDKを
インストールする必要があります。


人気Q&Aランキング

おすすめ情報