SQLite 데이터베이스에 대한 잘못된 경로를 해결하는 방법은 무엇입니까?

브라이언 J

개요 -기존 데이터베이스를 장치의 로컬 폴더에 복사하는 코드를 추가했습니다. 지금까지 기존 db가 아직 존재하지 않는 경우 첫 번째 조건 이 제대로 작동합니다.

문제 -그러나 솔루션 폴더에서 장치 폴더로 기존 db를 복사하는 코드 줄이 실행되면 SQLite 오류가 발생합니다. 오류는 db 파일을 열 수 없다는 것을 나타냅니다.

디버깅하는 동안 DBPath가 솔루션의 파일 위치와 동일하다는 것을 알 수 있습니다. 그래서 나는 경로에 무엇이 문제가 될 수 있는지 잘 모르겠습니다.

(db는 컨텐츠로 첨부되며 "항상 복사"로 설정됩니다.)

패키지에있는 db 파일의 전체 경로는 다음과 같습니다.

C:\Users\Brian\Documents\Visual Studio 2013\Projects\Parking Tag Picker WRT\Parking Tag Picker WRT\Databases\ParkingZoneDatabase.db

질문 : SQLite 클래스에 필요한 올바른 경로에 대한 db 경로를 어떻게 확인할 수 있습니까?

여기에 이미지 설명 입력

오류 로그 -여기서 발생하는 예외의 정확한 덤프는 SQLite 클래스에서 다음과 같습니다.

SQLite.SQLiteException was unhandled by user code
  HResult=-2146233088
  Message=Could not open database file: C:\Data\Users\DefApps\APPDATA\Local\Packages\6d00c25c-39d2-443f-a29b-2c30c8ce7e99_gevy8cezwa384\LocalState\Databases\ParkingZoneDatabase.db (CannotOpen)
  Source=Parking Tag Picker WRT
  StackTrace:
       at SQLite.SQLiteConnection..ctor(String databasePath, SQLiteOpenFlags openFlags, Boolean storeDateTimeAsTicks)
       at SQLite.SQLiteConnection..ctor(String databasePath, Boolean storeDateTimeAsTicks)
       at Parking_Tag_Picker_WRT.Helpers.DatabaseHelper.ReadZones(String tableName)
       at Parking_Tag_Picker_WRT.ViewModel.TagRequestViewModel.InitZoneInfoAsync()
       at Parking_Tag_Picker_WRT.TagRequestPage.OnNavigatedTo(NavigationEventArgs e)
  InnerException: 

DBHelper 코드 : (기존 DB를 장치의 로컬 폴더에 복사하는 코드)

    public const string DBPath = @"Databases\ParkingZoneDatabase.db";

    /// <summary>
    /// Load SQL_LiteTable from Solution   
    /// </summary>
    /// <param name="DBPATH"></param>
    /// <returns></returns>
    public async Task<bool> Init()
    {


        bool isDatabaseExisting = false;

        try
        {
            StorageFile storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync(DBPath);
            isDatabaseExisting = true;
        }
        catch
        {
            isDatabaseExisting = false;
        }

        if (!isDatabaseExisting)
        {
            //Fails at this line when retrieving the existing db
            StorageFile databaseFile = await Package.Current.InstalledLocation.GetFileAsync(DBPath);
            await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);
        }

        return true;          
    }

읽기 전용으로 설정 되지 않은 db 파일 자체에 대한 권한도 확인했습니다.

여기에 이미지 설명 입력

명부

먼저 repo에 감사드립니다. 문제는 지정하는 경로입니다.
를 사용 await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);하면 선택한 데이터를 데이터베이스 폴더 내부가 아닌 로컬 폴더에 복사하여 데이터베이스 폴더 내부에 복사한다는 의미입니다. 먼저 데이터베이스 폴더를 만든 다음 해당 폴더 안에 파일을 복사해야합니다.
지금 AppDBPath은 오류를 수정하기 위해 변경하는 간단한 솔루션을 제공하고 있습니다 . 이 솔루션은 데이터베이스 폴더 내부가 아닌 로컬 폴더에만 데이터베이스를 복사합니다.

public const string AppDBPath = @"ParkingZoneDatabase.db";
public const string PackageDBPath = @"Databases\ParkingZoneDatabase.db";


        /// <summary>
        /// Load SQL_LiteTable from Solution   
        /// </summary>
        /// <param name="DBPATH"></param>
        /// <returns></returns>
        public async Task<bool> Init()
        {


            bool isDatabaseExisting = false;

            try
            {
                StorageFile storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync(AppDBPath);
                isDatabaseExisting = true;
            }
            catch 
            {
                isDatabaseExisting = false;
            }


                if (!isDatabaseExisting)
                {

                    StorageFile databaseFile = await Package.Current.InstalledLocation.GetFileAsync(PackageDBPath);
                    await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);
                }


            return true;          
        }

AppDBPathDB에 대한 참조로 사용 하고 있으므로 나머지 코드는 완벽하게 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

셀레늄 웹 드라이버의 로그인 페이지에 대한 잘못된 테스트 데이터를 전달하는 방법은 무엇입니까?

분류에서Dev

Chrome에서 잘못된 그룹 막대 차트를 해결하는 방법은 무엇입니까?

분류에서Dev

대규모 SQLite 데이터베이스에서 데이터를 효율적으로 추출하는 방법은 무엇입니까?

분류에서Dev

PouchDB에 대한 잘못된 (?) TypeScript / DefinitelyTyped 타이핑을 해결하는 방법은 무엇입니까?

분류에서Dev

JSP, Java 및 데이터베이스. 로그인을 시도하는 동안 잘못된 데이터가 제출 된 경우 동일한 index.jsp를 한 번 더 호출하는 방법은 무엇입니까?

분류에서Dev

SQLite 데이터베이스를 초기화하는 적절한 방법은 무엇입니까?

분류에서Dev

sqlite 데이터베이스에서 .mdf 데이터베이스로 코드를 변경하는 방법은 무엇입니까?

분류에서Dev

목록보기 데이터를 SQLite 데이터베이스에 전달하는 방법은 무엇입니까?

분류에서Dev

SQLite 데이터베이스의 크기 제한을 140TB로 늘리는 방법은 무엇입니까?

분류에서Dev

SQLite 데이터베이스를 보호하는 방법은 무엇입니까?

분류에서Dev

Java Jersey : 잘못된 URL에 대한 응답을 변경하는 방법은 무엇입니까?

분류에서Dev

장고 데이터베이스의 항목 수를 제한하는 방법은 무엇입니까? 기본 데이터베이스 (sqlite3) 사용

분류에서Dev

자산 폴더에서 sqlite 데이터베이스를 업데이트하는 방법은 무엇입니까?

분류에서Dev

sqlite3 데이터베이스에 이미지를 삽입하는 방법은 무엇입니까?

분류에서Dev

sqlite3 데이터베이스를 웹 서버에 업로드하는 방법은 무엇입니까?

분류에서Dev

UWP C #에서 SQlite 데이터베이스에 이미지를 추가하는 방법은 무엇입니까?

분류에서Dev

점이 포함 된 데이터를 데이터베이스에 삽입하는 방법은 무엇입니까?

분류에서Dev

데이터베이스에 저장된 것과 동일한 형식으로 데이터를 표시하는 방법은 무엇입니까?

분류에서Dev

django 데이터베이스가 새 개체에 대해 삭제 된 개체의 ID를 사용하는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

MongoDB : 동일한 연결로 다른 데이터베이스에 연결하는 방법은 무엇입니까?

분류에서Dev

Winforms App Center 릴리스에 SQLite 데이터베이스를 포함하는 방법은 무엇입니까?

분류에서Dev

대용량 파일에 대한 데이터베이스를 만드는 방법은 무엇입니까?

분류에서Dev

SQLiteDataReader.GetString에 대한 데이터베이스를 모의하는 방법은 무엇입니까?

분류에서Dev

중첩 데이터에 대해 vuetify 2와 함께 vuelidate를 사용하는 방법은 무엇입니까? 잘못된 필드 가져 오기

분류에서Dev

Prod에서 잘못된 테스트 데이터를 삭제하는 방법은 무엇입니까?

분류에서Dev

iOS 애플리케이션에 대한 하나의 쿼리로 단일 sqlite 데이터베이스의 여러 테이블에서 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

데이터베이스에서 해독 된 데이터를 얻는 방법은 무엇입니까?

분류에서Dev

UCanAccess를 데이터베이스 암호로 암호화 된 Access 데이터베이스에 연결하는 방법은 무엇입니까?

분류에서Dev

런타임에 peewee SQLite 데이터베이스를 초기화하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    셀레늄 웹 드라이버의 로그인 페이지에 대한 잘못된 테스트 데이터를 전달하는 방법은 무엇입니까?

  2. 2

    Chrome에서 잘못된 그룹 막대 차트를 해결하는 방법은 무엇입니까?

  3. 3

    대규모 SQLite 데이터베이스에서 데이터를 효율적으로 추출하는 방법은 무엇입니까?

  4. 4

    PouchDB에 대한 잘못된 (?) TypeScript / DefinitelyTyped 타이핑을 해결하는 방법은 무엇입니까?

  5. 5

    JSP, Java 및 데이터베이스. 로그인을 시도하는 동안 잘못된 데이터가 제출 된 경우 동일한 index.jsp를 한 번 더 호출하는 방법은 무엇입니까?

  6. 6

    SQLite 데이터베이스를 초기화하는 적절한 방법은 무엇입니까?

  7. 7

    sqlite 데이터베이스에서 .mdf 데이터베이스로 코드를 변경하는 방법은 무엇입니까?

  8. 8

    목록보기 데이터를 SQLite 데이터베이스에 전달하는 방법은 무엇입니까?

  9. 9

    SQLite 데이터베이스의 크기 제한을 140TB로 늘리는 방법은 무엇입니까?

  10. 10

    SQLite 데이터베이스를 보호하는 방법은 무엇입니까?

  11. 11

    Java Jersey : 잘못된 URL에 대한 응답을 변경하는 방법은 무엇입니까?

  12. 12

    장고 데이터베이스의 항목 수를 제한하는 방법은 무엇입니까? 기본 데이터베이스 (sqlite3) 사용

  13. 13

    자산 폴더에서 sqlite 데이터베이스를 업데이트하는 방법은 무엇입니까?

  14. 14

    sqlite3 데이터베이스에 이미지를 삽입하는 방법은 무엇입니까?

  15. 15

    sqlite3 데이터베이스를 웹 서버에 업로드하는 방법은 무엇입니까?

  16. 16

    UWP C #에서 SQlite 데이터베이스에 이미지를 추가하는 방법은 무엇입니까?

  17. 17

    점이 포함 된 데이터를 데이터베이스에 삽입하는 방법은 무엇입니까?

  18. 18

    데이터베이스에 저장된 것과 동일한 형식으로 데이터를 표시하는 방법은 무엇입니까?

  19. 19

    django 데이터베이스가 새 개체에 대해 삭제 된 개체의 ID를 사용하는 것을 방지하는 방법은 무엇입니까?

  20. 20

    MongoDB : 동일한 연결로 다른 데이터베이스에 연결하는 방법은 무엇입니까?

  21. 21

    Winforms App Center 릴리스에 SQLite 데이터베이스를 포함하는 방법은 무엇입니까?

  22. 22

    대용량 파일에 대한 데이터베이스를 만드는 방법은 무엇입니까?

  23. 23

    SQLiteDataReader.GetString에 대한 데이터베이스를 모의하는 방법은 무엇입니까?

  24. 24

    중첩 데이터에 대해 vuetify 2와 함께 vuelidate를 사용하는 방법은 무엇입니까? 잘못된 필드 가져 오기

  25. 25

    Prod에서 잘못된 테스트 데이터를 삭제하는 방법은 무엇입니까?

  26. 26

    iOS 애플리케이션에 대한 하나의 쿼리로 단일 sqlite 데이터베이스의 여러 테이블에서 데이터를 가져 오는 방법은 무엇입니까?

  27. 27

    데이터베이스에서 해독 된 데이터를 얻는 방법은 무엇입니까?

  28. 28

    UCanAccess를 데이터베이스 암호로 암호화 된 Access 데이터베이스에 연결하는 방법은 무엇입니까?

  29. 29

    런타임에 peewee SQLite 데이터베이스를 초기화하는 방법은 무엇입니까?

뜨겁다태그

보관