2017-04-03 6 views
0

장치를 연결할 때 SQL 데이터베이스를 복제하는 일부분 인 Windows Mobile 6.5 장치 용 응용 프로그램을 만들고 로컬 복사본 (연결이 없기 때문에) 플러그를 뽑을 때.데이터베이스 (SQL Server CE/Windows Mobile 6.5)에 액세스 할 수 없습니다.

로컬 데이터베이스를 사용하기 위해 SQL Server CE (내 테스트 데이터베이스 사용)의 "Northwind" tutorial을 따라 갔지만 장치가 데이터베이스에 연결할 수 없다는 문제가 계속 발생했습니다. 나는 디버깅 할 수 없습니다 (I 장치에 프로그램을 전송해야하기 때문에 모든 시간을 테스트하기 위해)하지만 난 (내가 사용하려고 어떤 연결 문자열을)이 오류 메시지가 :

SQL database error: Unspecified error [.\userdb.sdf]

내가 여러 연결을 시도 문자열을 사용하면 디자이너를 사용하여 데이터 소스를 양식에 바인딩하면 데이터베이스에 액세스 할 수 있습니다. 하지만 수동으로 양식을 작성하는 것보다 훨씬 복잡하기 때문에 수동으로 쿼리를 설정해야합니다. 내가 시도

또한
public partial class UserLogin : Form 
{ 
    private SqlCeConnection _conn; 

    public UserLogin() 
    { 
     InitializeComponent(); 

     _conn = new SqlCeConnection(@"Data Source=.\userdb.sdf;Password=PASSWORD;Persist Security Info=True"); 
    } 

    private void buttonCancel1_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 

    private void buttonLoad1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      SqlCeCommand cmd = new SqlCeCommand(); 
      cmd.Connection = _conn; 
      cmd.CommandText = "SELECT userid, username, password FROM Users"; 

      _conn.Open(); 
      SqlCeResultSet resultSet = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable); 
      this.bindingSource1.DataSource = resultSet; 

     } 
     catch (SqlCeException sql_ex) 
     { 
      MessageBox.Show("SQL database error: " + sql_ex.Message); 
     } 
    } 

뭔가 다른, 형태가 디자이너에서 데이터 집합으로 가득 : 여기

단지 양식을 작성하기로했다하지만 다음 단계는 로그인/패스워드 검사 될 것이다, 내 코드입니다 하지만 여전히 데이터베이스에 수동으로 액세스 할 수 없습니다. https://pastebin.com/10P3wGeP

+0

거기에서 실행되지 않는 것처럼 exe 경로에 대해 현재 작업 디렉토리를 확인하고 exe 데이터베이스를 호출하는 것이 좋습니다. \ 다른 곳에서 실행 중일 수 있습니다. 그것을 찾아라. – BugFinder

+0

FTP를 통해 전송하는 디렉토리에서 .exe를 수동으로 실행합니다 (경로는 "/Debug 0.1.3/Reader.exe"와 같습니다.) 하지만 여러 연결 문자열을 다른 디렉토리의 전체 경로와 함께 사용해 보았습니다. 이것은 장치에 내장 된 SQL Server CE "엔진"에 의해 발생할 수 있습니까? – jldjul

+0

사실, havent는 모바일 장치에서 시도했지만 일반적으로 주요 문제가됩니다. – BugFinder

답변

0

Windows Mobile은 드라이브 문자와 '현재'디렉토리에 대해 잘 모릅니다. 이것이 "Data Source =. \ userdb.sdf"가 항상 실패하는 이유입니다.

Windows Mobile에서는 파일에 액세스 할 때 항상 완전한 경로 이름을 사용해야합니다.

당신은 실행이 시작되는 위치의 디렉토리 경로를 얻을 수

string path = System.IO.Path.GetDirectoryName( 
    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 

를 사용할 수 있습니다.

+0

매력처럼 작동합니다, 많이 고마워요! 플래시 스토리지의 전체 경로에 대한 훌륭한 대안. – jldjul