1

Monotouch 3.0.3.4 を使用して Sqlite データベースを作成しようとしています。iPhone シミュレーターではすべて正常に動作しますが、テスト用の iPhone では次のエラーが発生します。

DataLayer.CreateDatabase 例外: System.UnauthorizedAccessException: パス "/private/var/mobile/Applications/4B4944BB-EC37-4B0C-980C-1A9B60DACB44/TestApp.app/myDatabase.db3" へのアクセスが拒否されました。

私が使用しているコードは次のとおりです。

// creates database and tables if they do not exist.
public void CreateDatabase ()
{
string sql = string.Empty;
string dbFileName = "myDatabase.db3";
try {
          if (!File.Exists (dbFileName)) {

    // create database
    SqliteConnection.CreateFile (dbFileName);  //This is where the error occurs
    Console.WriteLine ("CreateDatabase: Database created."); 
            ... 

    }  
      catch (Exception ex) {
        Console.WriteLine ("CreateDatabase Exception: " + ex.ToString ());
    }

    ...

個人用フォルダも指定してみましたが、効果がありません。権限が正しいことを確認するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

モノタッチ3.0.3.4

それはおそらくMonoDevelop3.0.3.4です。MonoTouchバージョンを入手するには、MonoDevelopについてを参照してください。

"/private/var/mobile/Applications/4B4944BB-EC37-4B0C-980C-1A9B60DACB44/TestApp.app/myDatabase.db3"

デバイスでは、アプリケーションが署名されているため、(署名を壊さずに)コンテンツを変更することはできません。そのため、ディレクトリ内のものを変更することは許可されていません。.app

ディレクトリにデータベースを作成(またはコピー)してからDocuments、データベースを読み取り/書き込みとして開く必要があります。

詳細については、リンク先の記事を参照してください。

于 2012-07-24T19:35:17.190 に答える