MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
C Sharpとデータベース - データベースの接続のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
C Sharpとデータベース - データベースの接続
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == ADO.NETを用いてC\#でSQL Serverに接続するには、下記のような流れで処理を行う。<br> # 接続文字列の準備(コード埋め込みまたはapp.configから取得) # データベース接続準備(usingとtry-catchを用いた実装例) # SQLの実行 '''備考1'''<br> Initial CatalogをTrueにすると、SQL Server Expressだとmdfファイルへの接続のみ許可されて、接続ユーザ毎に新しいプロセスが立ち上がる。<br> 開発時にはTrueで問題ないが、本番環境ではセキュリティ的な問題でFalseにすること。<br><br> '''備考2'''<br> データソースの指定は下記の表を参照すること。ポート番号は省略できる。<br> 例えば、ローカルのSQL Server Expressのインスタンス名SQLEXPRESSに接続する場合には、下記のように指定すればよい。<br> Data Source=.\SQLEXPRESS;... {| class="wikitable" |- | '''既定のインスタンス''' || (コンピュータ名、サーバアドレス),(ポート番号) |- | '''名前付きインスタンス''' || (コンピュータ名、サーバアドレス)\(インスタンス名),(ポート番号) |} <br> == 接続文字列の準備 == * ソースコード上に埋め込む :プロパティ値を設定するので、ソースコード上で接続先が変更できる。 using System.Data.SqlClient; public string GetConnectionString2() { var builder = new SqlConnectionStringBuilder() { DataSource = "(サーバー名/IPアドレス)", Initial Catalog=(データベース名); Integrated Security = false, // SQL Server認証なら不要 UserID = "(ユーザー名)", Password = "(パスワード)" }; return builder.ToString(); } * app.configまたはweb.configから取得 :テスト環境、本番環境でソースコードを変更せずに接続先を変更することができる。 :ただし、ユーザ名とパスワードを平文で記載する場合は、リリースフローや運用でパスワード管理方法を考える必要がある。 :app.configまたはweb.configのadd[@name]で指定された名前は、接続文字列を取得する際のキーになる。 :ソースコード上でこのキーを指定することで接続文字列を取得する。 :ここでは'''"sqlsvr"'''を利用しているが、特定できれば任意の文字列で問題ない。 '''---ソースコード---''' using System.Configuration; public string GetConnectionString() { return ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString; } '''---app.configまたはweb.config---''' <configuration> <connectionStrings> <add name="sqlsvr" // 接続文字列 connectionString="Data Source=(サーバー名/IPアドレス); Initial Catalog=(データベース名); // SQL Server認証なら不要 Persist Security Info=True; User ID=(ユーザー名); Password=(パスワード)" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration> == データベース接続 == SQL Serverに接続する実装方法はいくつ存在するが、ここでは以下のパターンを記載する。<br> # usingとtry-catchを用いた実装例 # トランザクションを用いた実装例 <br> * usingとtry-catchを用いた実装例 :一部のオブジェクトは破棄を保証する必要があるので、ソースコードに記載するのではなく、usingで担保するような実装を行う。 :スコープから外れた時点で破棄が必要なオブジェクトは自動的に破棄されるが、 usingを用いるとオブジェクトの破棄が明示的になる。 using System; using System.Configuration; using System.Data.SqlClient; public void Connect3() { // 接続文字列の取得 var connectionString = ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString; using (var connection = new SqlConnection(connectionString)) using (var command = connection.CreateCommand()) { try { // データベースの接続開始 connection.Open(); // SQLの実行 command.CommandText = @"SELECT count(*) FROM T_USER"; command.ExecuteNonQuery(); } catch (Exception exception) { Console.WriteLine(exception.Message); throw; } finally { // データベースの接続終了 connection.Close(); } } } * トランザクションを用いた実装例 :上記のusingとtry-catchに加えて、トランザクション処理を行う場合の実装例である。 using System; using System.Configuration; using System.Data.SqlClient; public void Create(string id, string password) { // 接続文字列の取得 var connectionString = ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString; using (var connection = new SqlConnection(connectionString)) { try { // データベースの接続開始 connection.Open(); using (var transaction = connection.BeginTransaction()) using (var command = new SqlCommand() { Connection = connection, Transaction = transaction }) { try { // 実行するSQLの準備 command.CommandText = @"INSERT INTO T_USER (ID, PASSWORD) VALUES (@ID, @PASSWORD)"; command.Parameters.Add(new SqlParameter("@ID", id)); command.Parameters.Add(new SqlParameter("@PASSWORD", password)); // SQLの実行 command.ExecuteNonQuery(); } catch { // ロールバック transaction.Rollback(); throw; } finally { // コミット transaction.Commit(); } } } catch (Exception exception) { Console.WriteLine(exception.Message); throw; } finally { // データベースの接続終了 connection.Close(); } } } [[カテゴリ:C_Sharp]]
C Sharpとデータベース - データベースの接続
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse