読者です 読者をやめる 読者になる 読者になる

いろいろ備忘録日記

主に .NET 絡みのメモを公開しています。

ADO.NET入門記-029 (SQL Server Compact Edition 3.5, System.Data.SqlServerCe.3.5, DbProviderFactory)

C# ADO.NET


以下、自分用のメモです。


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のデータベースを作成する場合は
プロジェクトを右クリックして「追加」→「新しい項目の追加」で「ローカルデータベース」を
選択します。お手軽でとっても便利ですね。


================================
過去の記事については、以下のページからご参照下さい。