2014-02-12 7 views
0

내 개발 컴퓨터가 아닌 다른 컴퓨터에서 프로젝트를 테스트 할 때 가장 이상한 동작이 발생합니다. 모든 것이 개발 컴퓨터에서 잘 작동하지만 프로그램을 배포 할 때 "DbConnection을 열 때 오류가 발생했습니다."라는 메시지가 나타납니다. InnerException "데이터베이스 파일을 열 수 없습니다."SQLite 연결 문제

기본적으로 나는 비어있는 데이터베이스 (스키마 전용) exe 파일과 같은 폴더에 있고, 말했듯이, 모든 것은 개발 컴퓨터에서 잘 작동합니다. LinqConnect를 사용하여 SQLite 데이터베이스를 쿼리하고 있습니다. 다음은 오류가있는 메소드입니다 (데이터베이스에 액세스하는 모든 메소드에서 동일한 오류가 수신 됨).

private void LoadAccountsFromDatabase() 
{ 
    var accounts = new ObservableCollection<Account>(); 
    var connectionString = 
     string.Format("Data Source='{0}';Version=3;Default Command Timeout=10000;", UserPreferences.DatabasePath); 
    AccountsGrid.CommitEdit(); 
    AccountsGrid.SelectedItem = null; 

    MessageBox.Show(connectionString); 
    try 
    { 
     using (var db = new MainDataContext(connectionString)) 
     { 
      MessageBox.Show("step 4.5"); 
      var query = from a in db.Accounts 
       where a.Inactive == 0 || a.Inactive == null || ShowInactiveCheckBox.IsChecked == true 
       orderby a.AccountName, a.AccountNickname 
       select a; 

      try 
      { 
       MessageBox.Show("step 4.6"); 
       if (query.Any()) 
       { 
        MessageBox.Show("step 4.61"); 
        foreach (var item in query) 
        { 
         MessageBox.Show("step 4.65"); 
         accounts.Add(item); 
        }        
       } 

       MessageBox.Show("step 4.7"); 
       AccountsGrid.ItemsSource = accounts; 
       MessageBox.Show("step 4.8"); 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show("accounts add " + e.Message); 
       if (e.InnerException != null) 
       { 
        MessageBox.Show(e.InnerException.Message); 
       } 
      } 
     } 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show("load accounts " + e.Message); 
    } 
} 

"단계 4.6"메시지가 표시되고 예외가 발생합니다. "step 4.61"이 표시되지 않으므로 오류가 라인 if (query.Any())에있는 것 같습니다. 기저에있는 테이블이 비어 있기 때문에 기이합니다. 결과가 없습니다. 누구든지 여기에 문제가 될 수있는 아이디어가 있습니까? 나는 LinqConnect DLL 파일을 exe뿐만 아니라 sqlite3.dll과 함께 배치하여 문제가되어서는 안된다.

답변

0

배포 컴퓨터의 올바른 출력 폴더에 sqlite3.dll이없는 것 같습니다. 나는 거기에 있었음을 맹세했지만 그 프로젝트를 테스트하기 위해 전체 프로젝트를 다른 컴퓨터에 복사했을 때 여전히 오류가 발생했다. bin 디렉토리를 보면 해당 DLL이 누락되었다. 죄송합니다.