0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

C++でデータベースSQLServer2022 クエリーしてみる(ステップ-2.0)

Last updated at Posted at 2023-12-29

はじめに

この記事のお題はC++でデータベースSQLServer2022にクエリーしてみる(ステップ-2.0)」です。ステップ-2.0ということはまだうまくいってないことを意味します。

この記事内容の作業環境

Windows11 Pro 22H2
CPU Intel(R) Core(TM) i3-5005U 2.00 GHz
Microsoft Visual Studio Community 2022 Version 17.4.4
Microsoft Visual C++ 2022
SQL Server 16.0.1000.6 Express Edition
SQL Server Management Studio 19.2.56.2

お題のデータべース

データベース名 sample
テーブル名 language

項目名 項目型
id int
name nvarchar(50)

お題のソースコード

learn.microsoft.comの日本語サイトの下記に公開されているソースコードを使用します。

このサンプルソースは下記のように紹介されています。

2013 年 10 月から 2019 年 7 月までの間に、このサンプルの C++ ODBC アプリケーションは 47,300 回ダウンロードされました。

dsn

データソースはこんな感じです。

mssql2.dsn
 [ODBC]
DRIVER=ODBC Driver 17 for SQL Server
UID=sa
TrustServerCertificate=No
DATABASE=sample
WSID=DESKTOP-078KPRA
Trusted_Connection=No
SERVER=DESKTOP-078KPRA\SQLEXPRESS
Description=test

実行結果

それでは実行してみます。
コマンドプロンプトが開いた後、下図のようなデータソース選択ダイアログが開きますのであらかじめ用意しておいたDSNファイルを選択します。
odbc.jpg

パスワードを入力します。言語はjapaneseを選択できます。
odbc2.jpg

ダイアログを[OK]で閉じますと、コマンドプロンプトに「Connected!」と出力されれば接続しています。その手前の2行が文字化けしていますが、とりあえず無視です。続いてSQLを投入します。
odbc3.jpg

無事に結果が返りました。着色されたコンソールをWindowsで初めてみました。

おわりに

すみません、タイムアウトです。実は日本語のDBも用意していたのですが、オリジナルソースのままでは日本語が通らないようでした。ゼロからマイナスに叩き落されたような感じですが、次回ゼロまで挽回できるだろうか。

余談

オリジナルソースのままでは下記のヶ所(pwszConnStr = L"";)がポインタに定数を代入しようとして型不一致エラーでビルドエラーとなりましたので、下記のように応急処置しております。

if (argc > 1)
    {
        pwszConnStr = *++argv;
    }
    else
    {
        //pwszConnStr = L"";
        pwszConnStr = *++argv;
    }
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?