以下、自分用のメモです。
SQL Server Compact Edition 3.5を利用しようと思って、ADO.NETから
DbProviderFactory経由で接続しようと思ったらエラーが発生しました。
どうも、System.Data.SqlServerCeというプロバイダ名は存在しない模様。
前はこの名前であったような気がしたのにな・・・・。
んで、machine.configみてみると以下のように記述されていました。
System.Data.SqlServerCe.3.5
いつの間に、名前変わってたの!?w
上記のプロバイダ名に変更したら、うまくいきました。
以下サンプルです。
using System; using System.Data.Common; using System.Diagnostics; namespace SqlServerCE35Test { class Program { static void Main(string[] args) { DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlServerCe.3.5"); using (var conn = factory.CreateConnection()) { conn.ConnectionString = @"Data Source=Database1.sdf"; conn.Open(); using (var transaction = conn.BeginTransaction()) { try { using (var command = conn.CreateCommand()) { command.Transaction = transaction; command.CommandText = "INSERT INTO Table1 (Id, Name) Values (@Id, @Name)"; var param = command.CreateParameter(); param.ParameterName = "Id"; param.Value = 3; command.Parameters.Add(param); param = command.CreateParameter(); param.ParameterName = "Name"; param.Value = "gsf_zero3"; command.Parameters.Add(param); int rowAffected = command.ExecuteNonQuery(); Debug.Assert(rowAffected != 0); transaction.Commit(); } } catch (Exception ex) { transaction.Rollback(); } } } Console.WriteLine("Press Any Key to Exit..."); Console.ReadKey(); } } }
ちなみに、SQL Server Compact Edition 3.5のデータベースを作成する場合は
プロジェクトを右クリックして「追加」→「新しい項目の追加」で「ローカルデータベース」を
選択します。お手軽でとっても便利ですね。
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ