SQL Server との接続
NorthWindデータベースの設定方法
SQL Server 2005 Tips
- .NET から接続するための設定。
- SqlConnectionでは、TCP,名前付きパイプの順に検索しにいくらしい。
- http://www.microsoft.com/japan/sql/ssj/tips/01.mspx
Visual Studio Express(C#)でSqlConnectionを利用する。
Windows Form用のExpressでは、SqlConnection向けのウィザードが存在しないので、WebDeveloperで設定を確認したのちに手動で設定すると利用できる。もちろんWebDeveloperを利用せず直接設定してもOK。
- Visual Web Developer でSqlConnectionでSQL Serverの接続を設定する。
- app.configの<connectionStrings>の中の設定をコピーしてExpress Edition(C#)を再起動する。
<add name="DataBaseAP01.Properties.Settings.XXXConnectionString" connectionString="Data Source=XXX;Initial Catalog=xxx;User ID=xx;Password=xxxx" providerName="System.Data.SqlClient" />
Connection Objects
- SqlConnection →SQL Server 2000 and 2005
- OleDbConnection
- OdbcConnection
- OracleConnection →Oracle 7.3 8i,9i
Command Objects
- ステートメント 、ストアドプロシージャを実行する。
SqlCommand command = new SqlCommand(); command.Connection = xxx; //タイプを設定 command.CommandType = CommandType.Text; CommandType.StoredProcedure; command.CommandText ="select * from xxx";
command.Connection.Open(); //実行 command.ExecuteQuery();
SqlParameter
SqlParameter parameter = new SqlParameter(); parameter.Direction = ParameterDirection.Output; parameter.ParameterName = "@Money"; parameter.SqlDbType = SqlDbType.Money; SQLCommand.Parameters.Add(parameter); SQLCommand.Connection.Open(); SQLCommand.ExecuteNonQuery();
BLOB
- BinaryReader ,BinaryWriter
接続文字列の暗号化
- DataProtectionConfigurationProvider
- http://msdn2.microsoft.com/ja-jp/library/89211k9b.aspx
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); string provider = "DataProtectionConfigurationProvider"; ConfigurationSection constrings = config.ConnectionStrings; constrings.SectionInformation.ProtectSection(provider); constrings.SectionInformation.ForceSave = true; config.Save(ConfigurationSaveMode.Full);
AttachDbFilename
- MDFファイルを一時的にデータベースとする。
- http://blogs.wankuma.com/naka/archive/2005/08/14/17986.aspx
Transaction
- トランザクション
BeginTransaction
- 分散トランザクションに手動で参加
- isolationレベル
- Chaos これより分離性の高いトランザクションからの保留中の変更に対しては上書きできません。
- ReadCommitted 揮発性データをトランザクション中に読み取ることはできませんが、変更することはできます。
- ReadUncommitted 揮発性データをトランザクション中に読み取ったり、変更したりできます。
- RepeatableRead 揮発性データをトランザクション中に読み取ることはできますが、変更することはできません。トランザクション中に新しいデータを追加できます。
- Serializable 揮発性データを読み取ることはできますが、変更することはできません。また、トランザクション中に新しいデータを追加することはできません。
- Snapshot 揮発性データを読み取ることができます。トランザクションがデータを変更する前に、データを最初に読み取った後に別のトランザクションがそれを変更していないかどうかを検査します。データが更新されている場合は、エラーが発生します。これにより、トランザクションは、データの前回コミットされた値に到達できます。 この分離レベルを使用して作成されたトランザクションを上位変換しようとすると、InvalidOperationException がスローされ、"IsolationLevel スナップショットによるトランザクションは昇格することができません。" というエラー メッセージが表示されます。
- Unspecified 指定した分離レベルとは異なる分離レベルが使用されていますが、レベルを確認できません。この値が設定されている場合は、例外がスローされます。
DataSet
DataTableの追加
xxDataSet.Tables.Add(xxDataTable)
DataRelation
2 つの DataTable オブジェクト間の親子のリレーションシップを表す。
DataColumn parentColumn = DataSet1.Tables["Customers"].Columns["CustID"]; DataColumn childColumn = DataSet1.Tables["Orders"].Columns["CustID"]; // Create DataRelation. DataRelation relCustOrder; relCustOrder = new DataRelation("CustomersOrders", parentColumn, childColumn); // Add the relation to the DataSet. DataSet1.Relations.Add(relCustOrder);
DataRow
Merging
- 1.DataAdapter を使用して、DataSet 内に DataTable を作成し、各テーブルにデータ ソースのデータを格納します。
- 2.DataRow オブジェクトを追加、更新、または削除して、個別の DataTable オブジェクト内のデータを変更します。
- 3.GetChanges メソッドを呼び出して、データへの変更だけを格納する 2 つ目の DataSet を作成します。
- 4.この 2 つ目の DataSet を引数として渡して、DataAdapter の Update メソッドを呼び出します。
- 5.Merge を呼び出して、2 つ目の DataSet に格納された変更を最初のデータセットにマージします。
- 6.DataSet で AcceptChanges を呼び出します。変更をキャンセルするには、RejectChanges を呼び出します。
- Merging のアクション
- Add 必要な列を追加してスキーマを完成します。
- AddWithKey 必要な列と主キー情報を追加してスキーマを完成します。主キー情報を DataTable に追加する方法の詳細については、「FillSchema」を参照してください。.NET Framework OLE DB 用データ プロバイダで AddWithKey が正しく機能するためには、ネイティブな OLE DB プロバイダが DBPROP_UNIQUEROWS プロパティを設定して必要な主キー情報を取得し、IColumnsRowset 内の DBCOLUMN_KEYCOLUMN を調べてどの列が主キー列かを確認する必要があります。DataTable ごとに主キー制約を明示的に設定することもできます。これにより、既存のレコードと一致する入力レコードが、追加ではなく更新されるようになります。AddWithKey を使用する場合、.NET Framework SQL Server 用データ プロバイダは、実行するステートメントに FOR BROWSE 句を追加します。SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。詳細については、SQL Server Books Online を参照してください。
- Error 指定した列マップが存在しない場合は、InvalidOperationException が生成されます。
- Ignore 余分な列を無視します。