2012-05-24 7 views
0

나는이 코드를 검색하여 데이터를 데이터베이스에 저장하고 연결 문자열을 확인하고 예외/오류를 throw하지는 않지만이 코드가 내 데이터베이스에 데이터를 저장하지 않는 이유를 모른다. ..데이터를 데이터베이스에 저장하는 방법

string query = "Insert Into BookConfiguration (BookNum, x_axis, y_axis, BookName) Values (@BookNum, @x_axis, @y_axis, @BookName)"; 
    string connStr = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\BookShelf.mdf;Integrated Security=True;User Instance=True"; 


    try 
    { 
     using (SqlConnection conn = new SqlConnection(connStr)) 
     {     
       SqlDataAdapter da = new SqlDataAdapter(); 
       da.InsertCommand = new SqlCommand(query, conn); 
       da.InsertCommand.Parameters.Add("@BookNum", SqlDbType.Int).Value = quantity; 
       da.InsertCommand.Parameters.Add("@x_axis", SqlDbType.Int).Value = x; 
       da.InsertCommand.Parameters.Add("@y_axis", SqlDbType.Int).Value = y; 
       da.InsertCommand.Parameters.Add("@BookName", SqlDbType.Text).Value = openFileDialog1.FileName; 
      conn.Open();  

      da.InsertCommand.ExecuteNonQuery(); 

      conn.Close(); 
     } 
    } 

    catch (SqlException ex) 
    { 
     MessageBox.Show("Error Occured " + ex.Message); 
    } 

EDIT 지금 코드 같은 문제가 변경된

번호 :

 try 
     { 
      using (TransactionScope scope = new TransactionScope()) 
      { 

       using (SqlConnection conn = new SqlConnection(connStr)) 
       { 
        conn.Open(); 
        using (SqlCommand cmd = new SqlCommand(query, conn)) 
        { 
         cmd.Parameters.Add(new SqlParameter("@BookNum", quantity)); 
         cmd.Parameters.Add(new SqlParameter("@x_axis", x)); 
         cmd.Parameters.Add(new SqlParameter("@y_axis", y)); 
         cmd.Parameters.Add(new SqlParameter("@BookName", openFileDialog1.FileName)); 
         cmd.ExecuteNonQuery(); 
        } 
        conn.Close(); 
     } 

       scope.Complete(); 
      } 
     } 

IH OPE는 ...

는 C#을 비주얼 스튜디오 2010 SQL Server 2008의 코딩 ... 막연한 명확하지 않다

+0

오류가없는 경우 내 첫 번째 추측은있을 수 있습니다. 암시 적 트랜잭션이고 커밋하지 않습니다. 또한, SqlDataAdapter는 무엇입니까? 불필요한 것 같습니다 - 당신은 SqlCommand를 만들고 그것을 직접 사용할 수 있어야합니다. –

+0

나는 처음 sqlcommand를 사용하여 동일한 prob를 시도한 다음 sqlDataAdapter를 시도했다. 심지어 트랜잭션을 시도했으나 행운이 없다. –

+1

데이터가 데이터베이스에 추가되지 않는다는 것을 어떻게 알 수 있습니까? 데이터베이스 탐색기 도구를 사용하여'BookShelf.mdf'의 내용을 보거나 응용 프로그램의 다른 곳에서 SELECT 명령을 실행하고 있습니까? – mellamokb

답변

4
나는 거의 당신이 사용되지 않는 사용자 인스턴스/인 AttachDBFilename 기능을 사용하고 있기 때문에 당신이 찾고있는 것을 보장 할 수

프로그램과 다른 데이터베이스 사본에서.

여기에 진행 방법에 대한 @marc_s에서 답을 참조하십시오

https://stackoverflow.com/a/10740026/61305

기본적으로,이 쓸모없는 기능을 사용 중지합니다. SQL Server의 실제 인스턴스에 데이터베이스를 연결 한 다음 데이터베이스가 고정되어 있으므로 프로그램과 동일한 복사본에 연결할 수 있습니다.

+0

이것은 내 마음 속으로 조금 들어가는 것이고 이것이 내가 매우 도움이 될 수있는 더 많은 설명을 해주길 바란다. 감사합니다 –

+0

@ user1415295 어떤 부분이 명확하지 않은지 말해 줄 수 있습니까? 마크의 대답을 읽었 니? –

+0

u 사용이 중단 된 사용자 인스턴스/AttachDbFileName 기능을 사용하여 이것이 의미하는 바를 간략하게 설명 할 수 있습니다. 초보자입니다. –

관련 문제