2013-07-10 2 views
1

새 레코드를 데이터베이스에 추가해야하는 Windows Forms 응용 프로그램을 만들었습니다. 이제 성공적으로 추가하고 새 데이터를 사용할 수 있지만 응용 프로그램을 닫고 다시 시작하면 응용 프로그램이 아무 것도 변경되지 않은 것처럼 작동합니다.데이터베이스 파일이 업데이트되지 않습니다.

데이터베이스가 SQL Server에서 만들어졌으며 응용 프로그램에서 생성 한 .mdf 파일을 사용합니다. 여기

은 방법 :

private void btnUnos_Click(object sender, EventArgs e) 
{ 
      //create an instance of the row to be inserted 
      PIScarinaDataSet.OsobaRow novaOsoba; 
      novaOsoba = pIScarinaDataSet.Osoba.NewOsobaRow(); 

      //fill the attributes 
      novaOsoba.Ime = txtImeOsobe.Text; 
      novaOsoba.Drzavnost = dobijDrzavu(); 
      novaOsoba.Predstavlja = dobijPredstavnika(); 

      //insert into the database 
      this.Validate(); 
      this.pIScarinaDataSet.Osoba.Rows.Add(novaOsoba); 
      this.osobaTableAdapter1.Update(this.pIScarinaDataSet.Osoba); 
      this.osobaBindingSource1.EndEdit(); 
} 
+4

. 저장()? ......... –

+0

this.osobaBindingSource1.BeginEdit()은 어디에 있습니까? – Edper

+0

또 다른 것은 SQL Server에서 만든 .MDF를 사용하기 때문에 Visual Studio에서 파일의 "Copy to Output Directory"속성이 "Copy if newer"로 설정되어 있는지 확인해야합니다. (또는 올바른 디렉토리에 수동으로 넣으려는 경우 "복사하지 마십시오"). 즉, 실제로 데이터를 저장하고있는 경우 문제입니다. –

답변

1

당신은 우리에게 중요한 부분 보이지 않았다 - 연결 문자열 응용 프로그램의을 -하지만 난 거기 어딘가에 AttachDbFileName=yourdatabase.mdf 같은 것을 포함 할 것 같은데요 .

전체 사용자 인스턴스와 AttachDbFileName = 접근 방식은 결함이 있습니다 - 기껏해야! Visual Studio에서 앱을 실행하면 App_Data 디렉토리에서 출력 디렉토리 (일반적으로 앱이 실행되는 .\bin\debug - ) 일 때 일 가능성이 높고 INSERT은 정상적으로 작동하지만 파일은 .mdf 개 파일로 복사됩니다. 그냥 을보고 잘못된 .mdf 파일 결국!

이 방법을 계속 사용하려면 myConnection.Close() 호출에 중단 점을 넣은 다음 SQL Server Mgmt Studio Express를 사용하여 .mdf 파일을 검사하십시오. 데이터가 거의 확실합니다. 내 의견

진정한 해결책는 SQL Server Express를 설치

  1. 하는 것

  2. SQL Server 관리 Studio Express를 설치

  3. (당신은 이미 했어 어쨌든)
  4. 데이터베이스를 만들려면 SSMS Express, 논리 이름을 지정하십시오 (예 : MyDatabase)

  5. (서버에서 만들 때 주어진) 데이터베이스 이름을 사용하여 실제 데이터베이스 파일과 사용자 인스턴스를 연결하지 마십시오. 이 경우, 연결 문자열은 같은 것입니다 :

    Data Source=.\\SQLEXPRESS;Database=MyDatabase;Integrated Security=True 
    

    을하고 다른 모든 정확히 이전과 동일 ...이 당신을 도와 것입니다 이후

2

, 내가 만들 것 대답 :

[S] SQL Server에서 만든 .MDF를 사용하고 있기 때문에 파일의 "Copy to Output Directory"속성이 "Copy if Outputer"로 설정되어 있는지 확인해야합니다. 비주얼 스터드에서 io. (또는 올바른 디렉토리에 수동으로 넣으려는 경우 "복사하지 마십시오"). 즉, 실제로 데이터를 저장하고있는 경우 문제입니다.

관련 문제