2010-02-03 6 views
1

데이터베이스 파일 (.sdf)에 추가해야하는 일부 데이터가 사용자에게 입력되었습니다. 이 응용 프로그램은 매우 작기 때문에 Sql Server CE를 선택했으며 서비스 기반 데이터베이스로 작업 할 필요가 없습니다.ExecuteNonQuery()가 SQL Server CE에서 작동하지 않습니다

글쎄요.

여기에 코드를 간다 :

public class SqlActions 
{ 
    string conStr = String.Format("Data Source = " + new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\basedados.sdf"); 

    public SqlCeConnection SQLCEConnect() 
    { 
     SqlCeConnection Connection = new SqlCeConnection(conStr); 
     Connection.Open(); 
     return Connection; 
    } 

    public Boolean AdicionarAuditorio(string Nome, int Capacidade) 
    { 
     string Query = "INSERT INTO auditorios (nome, capacidade) VALUES (@Nome, @Capacidade)"; 
     using (var SQLCmd = new SqlCeCommand(Query, SQLCEConnect())) 
     { 
      SQLCmd.Parameters.AddWithValue("@Nome", Nome); 
      SQLCmd.Parameters.AddWithValue("@Capacidade", Capacidade); 
      if (SQLCmd.ExecuteNonQuery() == 1) 
      { 
       return true; 
      } else { 
       return false; 
      } 

     } 
    } 
} 

내가 데이터를 삽입 할 AdicionarAuditorio(string Nome, int Capacidade) 기능을 사용합니다. ExecuteNonQuery()을 실행하면 쿼리를 실행 한 후 영향을받은 행 수를 반환합니다. 그래야 성공한 쿼리라면 1을 반환해야합니다. 맞습니까?

결국 그는 1을 반환하지만, 브라우저를 테이블 데이터로 사용하면 쿼리가 추가해야하는 데이터가 없습니다.

여기에 무슨 문제가 있습니까?

주. 문제가 연결 인 경우 : 일부 문제가 발생하면 왜 연결 함수 SQLCEConnect() 을 사용하는 선택 문과 그것들은 모두 잘 작동합니다.

미리 감사드립니다.

+0

'SQLCmd.ExecuteNonQuery'결과를 임시 변수에 저장할 때 그 값은'1' - 정확합니까? –

+0

예. Visual Studio Debugger에 따라 임시 var를 값 1로 설정합니다. –

답변

3

올바른 파일을보고 있습니까? VS에서 앱을 빌드하면 내용이 SDF 파일을 대상 폴더에 복사하므로 프로젝트의 데이터베이스에 업데이트가 반영되지 않습니다. 코드가 파일 위치를 선택합니다.

일단 배치하면 프로그램 폴더에 프로그램에 쓰기 권한이 없기 때문에 (이 문제가 이미 발생할 수 있습니까? 이미 배포 했습니까?) 좋은 방법이 아닙니다. 대신 데이터베이스 파일은 appdata 폴더에 있어야합니다.

+0

나는 결코 그것에 대해 힘들 수 없습니다. 너의 권리. 그것이 문제였습니다. 감사. –

0

AdicionarAuditorio으로 전화하면 TransactionScopetransactionScope.Complete() 번으로 전화하지 않고 전화를 걸 수 있습니까?

관련 문제