1

私はウェブプログラミングを学ぼうとしている初心者です。C# を使用して VS 2012 でサイトを作成しています。SQL Server CE 4.0 を使用して、App_Data フォルダーにデータベースを接続しました。次のように接続しようとしています。

SqlCeCommand cmd1 = new SqlCeCommand("SELECT Admin FROM SystemUsers WHERE Email=" + user.Email);
SqlCeDataReader admin = null;
SqlCeConnection conn = new SqlCeConnection();
conn.ConnectionString = "Data Source=MyData.sdf;Persist Security Info=False;";
conn.Open();
admin = cmd1.ExecuteReader();

これを実行すると、次のエラーが発生します。

タイプ 'System.Data.SqlServerCe.SqlCeException' の例外が System.Data.SqlServerCe.dll で発生しましたが、ユーザー コードで処理されませんでした

私が間違っていることについて何か考えはありますか?私は何時間もこれを理解しようとしてきました。

4

1 に答える 1

1

データベースは APP_Data ディレクトリにあると言いましたが、接続文字列はそれがサイトのルート ディレクトリにあると想定しています。

試してみてください

conn.ConnectionString = @"Data Source|DataDirectory|\MyData.sdf;Persist Security Info=False;";

|データディレクトリ| NET Framework が、データ ファイルが存在することになっている定義済みの場所に変更するプレースホルダー文字列です。

そして、これは私があなたのコードを変更する方法です

using(SqlCeConnection conn = new SqlCeConnection(@"Data Source|DataDirectory|\MyData.sdf;Persist Security Info=False;"))
using(SqlCeCommand cmd1 = new SqlCeCommand("SELECT Admin FROM SystemUsers WHERE Email=@mail", conn))
{
    conn.Open();
    cmd1.Parameters.AddWithValue("@mail", user.Email);
    SqlCeDataReader admin = cmd1.ExecuteReader();
    while(admin.Read())
    {
      .....
    }
}

ご覧のとおり、次の変更を加えました。

于 2013-05-21T20:45:01.367 に答える