2010-07-23 3 views
1

나는이 SQL을 실행하면삽입하여 C#에서 문제 SqlCommand를

insert into table1(ID,Name) values ('10','Saeed'); 

, 그 레코드가 삽입되었다는 것, 그리고 내가 사용 테이블 (select * from table1)을 읽으면 그것이 나에게 삽입 된 기록을 보여주고 있지만, 프로그램을 닫으면 사라집니다.

string constr="Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|" + 
    "\\Database1.mdf;Integrated Security=True;User Instance=True"; 

SqlConnection con = new SqlConnection(constr); 
con.Open(); 

SqlCommand cmd = new SqlCommand(
    "insert into st (ID,Name) values ('10','saeed');", con); 

cmd.ExecuteNonQuery(); 
cmd.Close(); 

내가 수동으로 일부 레코드를 삽입, 그리고 데이터베이스를 읽을 때, 수동으로 삽입 된 기록이 존재 :

는 코드입니다.

거래와 관련된 문제는 해결되지 않습니다.

+1

어쩌면 당신은 삽입을 커밋 할 필요가 같은 것을에 연결 문자열을 변경하려고 들어? – pascal

+0

커밋하는 방법? – Saeed

+0

SqlTransaction tran = con.BeginTransaction(); ... tran.Commit(); – pascal

답변

2

(아래 내 코멘트에서 명확 코드 블록을 제공하기 위해 수정 됨). 그러나 게시 한 정확한 코드를 사용하고 있으면 게시자가 사용하지 않기 때문에 트랜잭션 문제가 아닙니다.

이렇게하면 연결 문자열로 펑키 한 무언가가 있다고 생각하게됩니다.

차기와 웃음이

Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=True; 
+0

제게 정확한 연결 문자열을 써주시겠습니까? 질문에 광산을 볼 수 있습니다. – Saeed

+0

초기 카탈로그 = Database1; 데이터 원본 = ; 통합 보안 = True 또한 현재 연결 문자열에서 User Instance = False를 변경해보십시오. 레코드는 아마도 해당 사용자 인스턴스에만 삽입됩니다. 아마도 응용 프로그램을 닫은 후에 새로 삽입 된 레코드가 표시되지 않는 것입니다. – dretzlaff17

+0

좋은 질문에 투표했습니다. – dretzlaff17

2

추측 : 당신은 SQL 서버 Express 및 프로젝트 내에서 "Database1.mdf"로 작업
(속성 창에서) 구성 "항상"

+0

나는 같은 느낌을 가지고있다. 이것이 해결책 – Nealv

+0

일 경우 알려 주시고 어떻게해야합니까? – Saeed

+0

속성을 "If New"또는 "Do not copy"로 변경하십시오. 파일이 복사 될 때마다 데이터가 손실됩니다. –

1

시도가 지정하는 값 "출력 디렉토리로 복사"에 대한 : "초기 카탈로그 = InstanceDB;" 또한 응용 프로그램을 다시 시작할 때 새 db 이름을 만들지 않도록 확인하십시오. 코드 자체 의

con.Close()

0

오류;

하지

cmd.Close(); 

나는 파스칼에 동의 SqlCommand

+0

그것은 실수였습니다. con.Cloce(); 맞다. – Saeed

0

에 대한 close 메소드가 없다. 거래가 커밋되지 않은 것처럼 들립니다.

은 사용자가 트랜잭션을 시작하고 커밋하는 것을 잊었다 같은 문제 소리

con.Open(); 
trans = con.BeginTransaction(); 

SqlCommand cmd = new SqlCommand("insert into st (ID,Name) values ('10','saeed');", con); 

cmd.ExecuteNonQuery(); 
tran.Commit(); 
+0

위원회에 삽입하는 방법은 무엇입니까? – Saeed

+0

음, 기본적으로 다음과 같습니다. con.Open(); trans = con.BeginTransaction(); SqlCommand cmd = 새 SqlCommand ( "st (ID, Name) 값 ('10', 'saeed');에 삽입;"); cmd.ExecuteNonQuery(); tran.Commit(); 이것은 내 머리의 맨 위에 있습니다. 세부 정보를 확인하기 위해 일부 Google을 원할 것입니다. – Henry

관련 문제