2

学校のプロジェクトとして、Visual Studio Express 2012 で web シンプルな CRUD Web アプリケーション (ライブラリ) を作成しています。私はこの非常に素晴らしいチュートリアルに触発されました - http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1

現在、SQL Server Compact エディションの.sdfデータ ファイルへの接続に問題があります。

私はこのweb.config接続文字列を持っています:

<connectionStrings>
    <add name="LibraryEntities"
     connectionString="Data Source=C:\Users\Administrator\Documents\Visual Studio 2012\Projects\2OBOP3_KU1\R10491\App_Data\R10491_library.sdf;"
     providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>

データベース接続テスト用に単純な ASPX ファイルを作成しました。

<script runat="server">
  protected void Page_Load(object sender, EventArgs e)
  {
      using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["LibraryEntities"].ToString()))
      {
          SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Writers", cn);
          cn.Open();
          SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
          rdr.Read();
          Response.Write(rdr[0].ToString()); //read a value
      }
  }
</script>

アプリケーションを実行すると、例外がスローされます。

例外の詳細: System.Data.SqlClient.SqlException: SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)

.sdfしかし、「データベース エクスプローラー」メニュー (「ソリューション エクスプローラー」の横) の「データベース エクスプローラー」タブで自分のファイルに接続しようとすると、正常に接続されます。

だから、接続文字列に問題があるはずだと思います-そうではありませんか? アドバイスありがとうございます。

4

1 に答える 1

4

SQL Server ではなく、SQL Server Compact に接続しています。

SqlCeConnectionnotを使用する必要がありますSqlConnection

  using System.Data.SqlServerCe;

  protected void Page_Load(object sender, EventArgs e)
  {
      using (SqlCeConnection cn = new SqlCeConnection(ConfigurationManager.ConnectionStrings["LibraryEntities"].ToString()))
      {
          SqlCeCommand cmd = new SqlCeCommand("SELECT COUNT(*) FROM Writers", cn);
          cn.Open();
          SqlCeDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
          rdr.Read();
          Response.Write(rdr[0].ToString()); //read a value
      }
  }

また、への参照が必要ですsystem.data.sqlserverce.dll

于 2012-12-31T13:36:54.360 に答える