2

C# で MS Access データベースを使用し、Web サービスを作成しています。データベースとの接続には、次のコードを使用しています

String databasePath = @"C:\inetpub\wwwroot\02 CustomerCreate\CustomerCreate\adResDemo.mdb";
String Connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databasePath + ";Persist Security Info=False";

//Connection to database
con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databasePath + ";Persist Security Info=False");
con.Open();

今、コードを使用してテーブルにいくつかの行を挿入しています。そのために次のコードを使用しています

//Query For ZipCode Insertion
String zipQuery = "INSERT INTO ZipCodes(ZipCode, City, State, DeliveryCharge, DeliveryComp, AutoID, RowGUID) VALUES ('" + PostCode + "','" + City + "','" + State + "'," + DeliveryCharge + "," + DeliveryComp + "," + AutoID + ",'" + RowGUIDZipCode + "')";
//Inserts query ZipCodes Table
cmd = new OleDbCommand(zipQuery, con);
cmd.ExecuteNonQuery(); 

上記のコードを Visual Studio で直接実行すると、正常に動作し、データベースにエントリが作成されます。しかし、この Web サービスを IIS サーバーcmd.ExecuteNonQuery()にデプロイすると、実行時例外がスローされ、データベースに値が挿入されません。

例外

System.Data.OleDb.OleDbException: Operation must use an updateable query.
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
at CustomerCreate.Service1.createCustomer(String FirstName, String LastName, String EmailAddress, String CompanyName, String StreetAddress, String PostCode, String City, String State, String Country, String PhoneNumber) in C:\inetpub\wwwroot\02 CustomerCreate\CustomerCreate\Service1.asmx.cs:line 141

それはどのような問題ですか?

4

1 に答える 1

2

よくわかりませんが、接続しようとしている mdb ファイルを含むフォルダーに対する変更権限が必要なようです。

この権限を設定するには:

App_Data フォルダー (または mdb ファイルを配置した他のフォルダー) を右クリックし、[プロパティ] を選択します。[セキュリティ] タブを探します。表示されない場合は、[マイ コンピュータ] に移動し、[ツール] をクリックして [フォルダ オプション...] を選択し、[表示] タブをクリックします。一番下までスクロールし、「簡易ファイル共有を使用する (推奨)」のチェックを外します。[セキュリティ] タブに戻り、関連するアカウントを [グループまたはユーザー名] ボックスに追加する必要があります。[追加...] をクリックし、[詳細]、[検索開始] の順にクリックします。適切なアカウントが表示されます。それをダブルクリックして [グループ名またはユーザー名] ボックスに追加し、権限の [変更] オプションをオンにします。それでおしまい。これで完了です。

このリンクから取得

于 2012-10-04T13:01:18.877 に答える