2012-08-03 2 views
0

DataGridview를 업데이트하려고했습니다. 그것은 ExecuteNonQuery는 초기화되지 않는다는 것을 말한다C# sqlcommand를 사용하여 datagridview 업데이트

private void button1_Click(object sender, EventArgs e) 
    { 
     con = new System.Data.SqlClient.SqlConnection(); 
     con.ConnectionString = "Data Source=tcp:SHEN-PC,49172\\SQLEXPRESS;Initial Catalog=LSEStock;Integrated Security=True"; 
     con.Open(); 


     if (dataGridView1.Rows.Count > 0) 
     { 
      int nRowIndex = dataGridView1.Rows.Count-2; 

      if (dataGridView1.Rows[nRowIndex].Cells[1].Value != null) 
      { 
       textBox2.Text = Convert.ToString(dataGridView1.Rows[nRowIndex].Cells[1].Value); 
       String updateData = "UPDATE CostPrice SET SupplierName = @SupplierName, CostPrice = @CostPrice WHERE PartsID = '" +textBox1.Text+"'"; 
       SqlCommand update = new SqlCommand(updateData, con); 
       SqlDataAdapter adapter = new SqlDataAdapter(updateData, con); 

       update.Parameters.Add("@SupplierName", SqlDbType.NVarChar, 50, "SupplierName"); 
       update.Parameters.Add("@CostPrice", SqlDbType.NVarChar, 50, "CostPrice"); 
       adapter.UpdateCommand = update; 

       //update.ExecuteNonQuery(); 

       if (update != null) 
       { 
        update.Dispose(); 
        update = null; 
       } 

      } 
      else 
      { 
       MessageBox.Show("NULL"); 
      } 
     } 
     con.Close(); 
    } 

:

내 코드 (편집). 내 코드에 무슨 문제가 있습니까?

저는 SqlCommand를 사용하여 업데이트하고 있습니다. 그러나 인터넷에서 볼 때 거의 모든 사람들이 SqlDataAdapter를 사용하고 있는데, 그 차이점은 무엇입니까? 미리 감사드립니다.

더 좋은 코드를 가지고 있다면, 그 점을 배우고 싶습니다. 감사! SqlCommand.Connection Property

또는이에 :

답변

1

오류를 극복하기 위해 약 Data Adapter Vs Sql Command

을 읽을 수있는, 내가 여기

update.Connection = con; 

가 기준입니다 사기꾼 = 명령의 연결을 할당해야합니다 생각 줄 :

SqlCommand update = new SqlCommand(updateData, con); 

ps 당신의 그들과 함께 수행 한 번하는 SqlCommand 개체를 처리하는 것을 잊지 : 제레미 톰슨 제안

if (sqlCommand != null) 
{ 
    sqlCommand.Dispose(); 
    sqlCommand = null; 
} 
0

, 당신은 한 줄의 코드가 누락되었습니다.

update.Connection = con; 

은 1 update.ExecuteNonQuery();

+0

하지만 그것은에 가까운 "의 구문이 잘못되었습니다 ','나를 보여줍니다. executenonquery line –

1

를 호출하기 전에이 코드를 추가 확인하여 업데이트 쿼리가

업데이트 구문 올바른 :

UPDATE [TableName] SET [CoulumnName]='new value' where [ColumnName]='yourFilterValue' 

하여 업데이트 쿼리는이 같은 뭔가를해야만해야합니다 :

String updateData = "UPDATE CostPrice SET CostID = @CostID, SupplerName = @SupplierName, CostPrice = @CostPrice WHERE PartsID = @PartsID"; 

두 번째 : 방금 sqlcommand에 sqlconnection을 추가하지 않았습니다.

SqlCommand update = new SqlCommand(updateData,con); 

세 번째 : 쿼리에 매개 변수가 있지만 값을 설정하지 않은 경우에도 마찬가지입니다.

체크 CSHARP 스테이션에이 샘플 : ado.net lesson 6

이 코드는 다음과 같이 표시됩니다

string updateData = "UPDATE CostPrice SET SupplierName = @SupplierName, CostPrice = @CostPrice WHERE PartsID [email protected]"; 
SqlCommand update = new SqlCommand(updateData, con); 

update.Parameters.Add("@SupplierName", SqlDbType.NVarChar, 50, "SupplierName"); 
update.Parameters.Add("@CostPrice", SqlDbType.NVarChar, 50, "CostPrice"); 
update.Parameters.Add("@PartsID", SqlDbType.NVarChar, 50,textBox1.Text); 
update.ExecuteNonQuery(); 

감사

+0

그러나 그 다음 "Incorrect syntax near ','가 나타납니다. executenonquery() 줄에서 –

+0

코드를 변경했지만 오류가 발생하지 않았지만 데이터베이스가 업데이트되지 않습니다. 너 pls 좀 봐 줄래? –

+0

SqlDataAdapter 어댑터 제거 = 새 SqlDataAdapter (updateData, con); 및 adapter.Update(); 그냥 update.ExecuteNonQuery(); 그게 다야. 잘될거야. : D 투표를하고 대답을 표시하십시오. – BizApps

관련 문제