C#でSQLserver

C#の.net frameworkでとりあえずSQLserverにつなぐ

C#の.net frameworkでのとりあえずの接続

C#には新しい .NET(他のOSもサポートする)と従来の .net framework(Windowsのみ)がありますが、今回は従来のものでやってみます

SQLserverのインストール

Visual Studio のinstallerですでに「.NETデスクトップ開発」と「データの保存と処理」がインストール済みとして話を進めます。.NETデスクトップ開発でC#もVBもインストールされています。

なので、SQLserveのインストールそしてSSMS(SQL Server Management System)のインストールを行っていきます

SQLserver download

ブラウザで「sqlserver download」を検索します。microsoftのサイトが出たらクリックします

Express選択

何種類か出てきますが、上のほうは有料なので下のほうを探すと、無料のEXPRESSがありますので、そちらをクリックします

Express download

SQL2022-SSEI-Expr.exeを実行してインストールを始めます。

sqlserver install

基本から選択

ライセンス

ライセンス条項に同意して

install

インストールを開始します

install

遅いマシンでは時間がかかります。まずはダウンロード

install

そしてインストール

install

ようやく終わりました

SSMSのインストール

SQLserverは裏で動いているだけで操作ができません。そこでSSMSというサブシステムを入れてデータベースの操作を行います

SSMS install

さきほどのSQLserverインストール終了画面の下に「SSMSのインストール」ボタンがあります。これを押すとSSMSのサイトに飛びます。

SSMS download

実はSSMSは一つ入れてすべての言語対応というものではなくて、なのであわててダウンロードしないでくださいね。デフォルトは英語です

SSMS install

そこで、ずっと下のほうにスクロールします。すると各言語対応が出てきますので、そこで「日本語」を選択してください。

reboot

ダウンロードしたら一度再起動しましょう

SSMS install

ダウンロードしたものはダウンロードフォルダにあるので、「SSMS-Setup-JPN.exe」を起動してください。

SSMS install

インストール画面が立ち上がります。「インストール」を押してインストールを開始してください

SSMS install

しばらくお待ちください

SSMS install

終了しました

SSMS 起動

起動してみましょう

SSMS 起動

「接続」を押すとつながります。正規版のSQLserverとは違いEXPRESSとしてつながります。

SQLserverの設定

デフォルトの状態でインストールができて、すでに裏で動いています。しかし、プログラムからさわるにはまだまだ設定があります

SQLserver設定

構成マネージャーを起動します。

SQLserver設定

SQLserverネットワーク構成のSQLEXPRESSのプロトコルをクリックします。TCP/IPが無効なのでここを変えます

SQLserver設定

まず無効を有効に変えます

SQLserver設定

再起動しろて出てきますが、まだ作業があるのでOKだけしておきます

SQLserver設定

TCP/IPのプロパティを開きます

SQLserver設定

IPアドレスタグの下のほうにスクロールします。IPALLを見ます

SQLserver設定

TCPポートを1433、動的ポートを消します。これでSQLserverのデフォルトの1433になります。ただこのポートはよく知られたポートなので攻撃の対象になるので動的ポートがあるのですが、今回は単純にしておきます

SQLserver設定

また再起動しろとでてきますが、これはパソコンの再起動ではなく、サービスの再起動です

SQLserver設定

サービスは実行中ですので

SQLserver設定

再起動します

SQLserver Browserの設定

C#やVBから接続するにはこのBrowserが動いていたほうがいいです。デフォルトでは止まっています

Browser設定

なので最初は無効になっています

Browser設定

右クリックしてプロパティを開きます

Browser設定

サービスタグの開始モードを無効から手動または自動に変えます

Browser設定

ログオンタグの開始が押せるようになりますので、押します

Browser設定

実行中になりました

データベースとテーブルを作ります

SQLserverを入れてSSMSまで入れたらデータベース

試しに体温テーブルを作ってみましょう

テーブルの入れ物であるデータベースを作ります。データベースの中にデータベースを作るというのもなんか変な感じですが、たとえばデータベーススペースという物だとしましょう。それが入れ物になります。

まずはSql Server Management Service(SSMS)を起動します。インストールしてあるのでメニューから選んでください

SSMS起動

最初にログインが必要です。ユーザーは特に作っていませんので、Windows認証でLOGINします。

SSMS接続

ではまずデータベーススペースを作りましょう。「データベース」の文字を右クリックして「新しいデータベース」を選択します

データベーススペース作成

名前はなんでもいいのですが今回は「MyDb」とします。名前を入れてOKを押します

データベーススペース作成

帰ってきたら更新を書けます。このSSMSは更新を掛けないと表示が最新になりません。

更新

では、MyDbを展開して「テーブル」展開します

テーブル作成

「テーブル」を右クリックして「新規作成」の「テーブル」を選択しましょう

テーブル作成

テーブルの列の宣言の画面が開くので一つ目から入力していきます。一つ目は主キーでIDという名前にして、自動採番するように設定します。名前をID、型をintにして、NULLは許さないのでチェックを外します。

列作成

で、自動採番といって、主キーを作られた順に自動で作る仕組みにしますので、画面したの「列のプロパティ」の中の「IDENTITYの指定」を展開して、「IDである」をはいに変えます

自動採番

続いて第2列の日付をedateという名前でdate型で作成します。第3列は体温でbtempという名前で、float型で作成します。

2列目3列目

そして、重要な主キーの設定をします。IDの列を右クリックして「主キーの設定」を押します。

主キーの設定

できたので左上の保存のアイコンをクリックして

保存

名前を聞いてくるので「bodytemp」とします。

テーブル保存

さきほどのデータベースと同じで更新しないと出てこないのでテーブルを更新します。

テーブル更新

なにかデータを入れたいので、bodytempを右クリックして「上位200行の編集」をクリックします。

テーブル入力

1列目のIDは自動採番なので入力しないで結構です。2列目、3列目にデータを入れて「TAB」キーを押せば確定します

テーブル入力

c#のプロジェクトを作ります

やっと準備ができたので、c#のプロジェクトを作っていきますが、今回はプログラミングはありません。自動生成でコードを作って、データベースの中身が見えるところまでです。

新規にC#のプロジェクト作成

Visual Studioを立ち上げて、新しいプロジェクトを作成していきます。

新規プロジェクトを作成します。

プロジェクト作成

従来の.NET Frameworkの方のformアプリケーションを選択します。似たものがいっぱいあるので間違わないようにしてください。

Formアプリケーション

プロジェクトの名前を設定します。csForm47sqlとしました。

プロジェクト名

最初はデータソースがないので、左端にあるデータソースを選択します。「新しいデータソースの追加」を押します

データソース接続

最初の画面で左隅のデータベースを選択します。

データベース選択

次の画面でデータソースを選択します。

データソース選択

今回はデータソースとして、あらかじめ用意したbodytempテーブルをつないでいきますので、まず新しい接続を選択します。

接続選択

接続の追加の画面では、接続するサーバーを探します。今回は自分に接続するのですが、まずは検索してみましょう。最新の情報に更新を押します

サーバー選択

しばらく検索が続き、終わったらコンボボックスのなかに候補がでてきます。そこから自分の名前をクリックします。\\EXPRESSとでているのが無料版のSQLServerの名前です。

サーバー選択

パソコン名が出てきてしまいますが、そのまま保存するとこのパソコンでしか実行できなくなるので、パソコン名の部分を「localhost」に書き換えて、自分あての接続にします。こうすればこのソースをどこに持って行っても自分宛でつながります。

サーバー選択

下の方に方にある、「サーバー証明書を信頼する」にチェックをいれてください。

サーバー証明書

MyDbデータベースに接続するので、MyDbを選択します。

データベース選択

そして「テスト接続」を行って確認を行います。

接続確認

OKを押して、次のページで接続文字をみるとこんな感じです。この接続文字でプログラムからも接続していきます

接続確認

この接続文字は、保存されます

接続文字

次のページで接続するテーブルを選択します

テーブル選択

これでテーブルへの接続ができます。データソースを展開するとその中身が見えます

データソース

その中身をフォームにドラッグします。

datagrid作成

この時、フォームの下に自動作成された接続用のオブジェクトがいっぱいできます。少しデータグリッドの幅を広げましょう。開始します

datagrid作成

データベースの中身が画面に表示されます

datagrid実行

ソースコードも自動生成されます。

自動生成されたソースの中身
    using System;
    using System.Windows.Forms;
    
    namespace csForm47sql
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void bodytempBindingNavigatorSaveItem_Click(object sender, EventArgs e)
            {
                this.Validate();
                this.bodytempBindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(this.mydbDataSet);
    
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                // TODO: このコード行はデータを 'mydbDataSet.bodytemp' テーブルに読み込みます。必要に応じて移動、または削除をしてください。
                this.bodytempTableAdapter.Fill(this.mydbDataSet.bodytemp);
    
            }
        }
    }
    

Form上に表示されたナビゲータで保存をクリックすると、入力途中のものが固定化されてデータセット丸ごと保存されます。

また読み込み時にはテーブルアダプターのFillでデータベースの内容がデータテーブルに読み込まれます。またDataGRiViewがデータテーブルとBindingされてるので画面に表示されます。