2012-08-02 3 views
2

데이터베이스와 SQL의 작동 방식을 이해하는 데 어려움이 있습니다. 데이터베이스의 특정 행을 업데이트하려고합니다. 행을 제거 할 수 있지만 InsertAt 함수를 사용할 때 항상 내 데이터베이스 끝에 추가됩니다. 또한 새로운 식별자 키가 할당됩니다.데이터베이스에 행 삽입

나는 이미 거기에있는 것을 편집하고 싶습니다. 새 키가 필요 없으며 편집 된 행을 그대로 유지하고 싶습니다.

문제를 표시하기 위해 코드를 줄였습니다.

public partial class MainWindow : Window 
{ 

    System.Data.SqlClient.SqlConnection con; 
    System.Data.SqlClient.SqlDataAdapter da; 

    DataSet sessions; 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     con = new System.Data.SqlClient.SqlConnection(); 

     sessions = new DataSet(); 

     con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\md\\PokerDataBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 

     con.Open(); 

     string sql = "SELECT * From Sessions"; 
     da = new System.Data.SqlClient.SqlDataAdapter(sql, con); 
     da.Fill(sessions, "Sessions"); 

     con.Close(); 

     System.Data.SqlClient.SqlCommandBuilder cb; 
     cb = new System.Data.SqlClient.SqlCommandBuilder(da); 

     DataTable dt = sessions.Tables["Sessions"]; 


     DataRow table = sessions.Tables["Sessions"].NewRow(); 
     table[0] = "Some Data"; 
     table[1] = "Some Data"; 
     table[2] = "Some Data"; 
     table[3] = 2; 
     table[4] = 3; 
     sessions.Tables["Sessions"].Rows[2].Delete(); 
     sessions.Tables["Sessions"].Rows.InsertAt(table, 2); 

     da.Update(sessions, "Sessions"); 
    } 
} 

내가 뭘 잘못하고 있는지 알아낼 수 있습니까?

답변

1

오류

당신이 당신의 데이터베이스에 새 행을 추가합니다

DataRow table = sessions.Tables["Sessions"].NewRow(); 

을 사용하여 새 행을 만드는, 행을 업데이트 할 수 없을거야.

솔루션

당신이 특정 행, 같은 선택해야 행 업데이트하려면 :

DataRow table = sessions.Tables["Sessions"].Rows[0]; 

다음 행 데이터를 수정 한 다음 da를 업데이트합니다.
데이터베이스의 기존 행을 업데이트합니다.

+0

감사합니다. 그 일은 그 일을 처리했습니다. –

+0

거기에 -1이 있습니까? –

+0

나는 당신에게 -1을주지 않았다? +1을주고 응답으로 표시 –