質問: dt; ``` しかし、いくつか疑問点があります。 1.string connstrに直接サーバー名やユーザー名を記述するのは大丈夫なのか? (パスワードが直接書いてあるのがセキュリティ的に問題ないのか、ユーザーIDなどが変わったときに毎回プログラムを変更しないといけないのは面倒ではないか) 2.データアダプタはSQLを投げたい度に作成しないとなのか? 3.dataGridView以外の方法で表示させたい場合はどうするのか? 4.サーバーの接続はデータを取得したいタイミングで接続し、データを取得したらその都度閉じるべきなのか? また、visualstudioを統合開発環境としているのですが、、、 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/bd4e289fb79ea4332fea2d5733b445b1.png) このサーバーエクスプローラーの活用方法がイマイチわかりません。 データベースを用いた開発は今回が初めてです。拙い質問ばかりですみません。。。 開発環境はvisualstudio2017、C#、MySQL5.7です。 よろしくお願いします。m(__)m
回答: C#に限らず一般論の角度から回答してみます。 > > 1.string connstrに直接サーバー名やユーザー名を記述するのは大丈夫なのか? > > (パスワードが直接書いてあるのがセキュリティ的に問題ないのか、ユーザーIDなどが変わったときに毎回プログラムを変更しないといけないのは面倒ではないか) > > > 基本的にはプログラムを外側から直接覗く術はありません(覗けたら大変ですよね) ※Webアプリケーションの場合 ユーザーが見ているのは実行結果のみです。 C#ですと毎回コンパイルすることになるのでconfigなど設定ファイルに書いて外に出すのが通例かと思います * teratail:App.configからDB接続文字列を取得する方法 > > 2.データアダプタはSQLを投げたい度に作成しないとなのか? > > > 基本的には1SQL1アダプタの生成となると思います。 24.2.3.4. MySqlDataAdapter の使用 > > MySQLDataAdapter は、データソースに対して適切な SQL 文を使用し、DataSet 内のデータをデータソースのデータと一致するように変える DbDataAdapter.Fill と、データソースのデータを DataSet のデータと一致するように変える DbDataAdapter.Update をマッピングすることによってこのブリッジを供給します。 > > > 3.dataGridView以外の方法で表示させたい場合はどうするのか? > > > これは確かGridViewにデータをバインドしているやり方ですよね。 他に「どこにどう表示させたいか」で手法が変わってくると思います。 単にコンソール出力させたければreaderでループさせて出力するとか。 readerのように個々のデータを取り出せればあとは変数と同じなので、 如何様にも使えますよね。 > > 4.サーバーの接続はデータを取得したいタイミングで接続し、データを取得したらその都度閉じるべきなのか? > > > .Netがどうか覚えてはないのですが、「毎回閉じる」必要ないと思います。 あくまで「1処理全て終わったら閉じる」形でしょうか。 ですので、コネクションの取得とオープン、クローズを共通のクラスに持っておき、 オープン→コネクションを保持しておいて持ちまわって色々処理→全て終わったらクローズ、という形が望ましいかなと。 中にはセッションにコネクションを保持しておいて半永久的に利用する方法もないわけではないですが(ログアウト時にはクローズする) 1処理終わった際にクローズと言うのが現実的でしょうね。