2014-10-17 3 views
0

사용자 입력에 의해 데이터베이스에 메모를 저장하려하지만 내 코드가 데이터베이스에 저장하지 않습니다.쿼리가 데이터베이스에 저장되지 않습니다.

기능을 사용하여 사용자 입력을 확인할 계획입니다. 무슨 일

SqlConnection con = database.GetConnection(); 
SqlCommand command = new SqlCommand("INSERT INTO notities (notities_gebruiker, notities_datum, notities_doeldatum, notities_bericht) values(@notities_gebruiker, @notities_datum, @notities_doeldatum, @notities_bericht)", con); 
command.Parameters.AddWithValue("@notities_gebruiker", this.gebruikerid.ToString()); 
command.Parameters.AddWithValue("@notities_datum", DateTime.Now); 
command.Parameters.AddWithValue("@notities_doeldatum", DateTime.ParseExact(this.targetDate.Text, "dd/MM/yyyy", null)); 
command.Parameters.AddWithValue("@notities_bericht", this.Note.Text); 
con.Open(); 
command.ExecuteNonQuery(); 
con.Close(); 
initialiseListBox(); 

내가 내 응용 프로그램을 닫을 때마다 데이터베이스가 저장 값이고 원래 상태로 돌아갑니다 잃는 것입니다. 수동으로 항목을 추가 할 수 있습니다 ..

EDIT : 응용 프로그램을 통해 추가 한 행을 롤백하지만 실행중인 경우 저장 한 데이터베이스에서 데이터를 가져올 수 있습니다.

+0

그것은 문제가 단지 해당 정보와 어디에서 오는지 말하기 어렵다 ... 당신이 오류 메시지가 없습니까? 왜냐하면 내가 여기 보이는 코드는 괜찮아 보인다. –

+0

나는 아무것도 얻지 못한다. ExecutenNonQuery는 1을 돌려 준다. 그러나 애플리케이션을 닫을 때마다 데이터베이스는 이전 상태로 되돌아 간다. – Script99

+3

모든 빌드에서 데이터베이스를 다시 만들고있는 것처럼 들리 네요. 표시된 코드가 정상이므로이 경우를 확인하십시오. – walther

답변

0

bin/debug 폴더에있는 데이터가 들어있는 데이터베이스 복사본을 찾으십시오.

이 문제를 방지하는 가장 좋은 방법은 연결 문자열에 전체 경로를 사용하고 | DataDirectory | 디버깅하는 동안

1

방금 ​​삽입 한 데이터를 커밋하는 것을 잊어 버리는 것입니다. 트랜잭션을 시작 SqlTransaction 클래스를 사용

SqlTransaction myTransaction = con.BeginTransaction(); 
command.ExecuteNonQuery(); 
myTransaction.Commit(); 

그것은 당신의 연결, 명령 및 트랜잭션 코드 블록이 완료되면 폐기 확인하기 위해 사용하는 문장의 사용을 만드는 것도 좋은 생각이다, 오히려을

Using (SqlConnection con = database.GetConnection()) 
    { 
    con.Open(); 

    Using (SqlCommand command = new SqlCommand("sqlhere")) 
     { 

     Using (SqlTransaction myTransaction = con.BeginTransaction()) 
      { 
       //your code here 
      } 

     } 
    } 

SqlTransaction 클래스 :

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction(v=vs.110).aspx

깔끔한 articl 수동으로 닫기() 메소드를 호출하는 것보다 using 문에 전자 :

http://www.codeproject.com/Articles/6564/Understanding-the-using-statement-in-C

+0

하지만'transaction','commit'을 사용하지 않더라도 OP의 질문 만 사용하면 제대로 작동합니다! –

+0

OP 데이터베이스에서 암시 적 커밋을 해제해야합니다. 이 게시물 확인 : http://stackoverflow.com/questions/1090240/how-do-you-set-autocommit-in-an-sql-server-session – JoshHunter

관련 문제