2013-05-12 2 views
1

datagridview를 사용하여 열을 추가했습니다. 따라서 textboxes를 사용하여 데이터를 datagridview에 추가합니다. 고객이 원하는 제품 목록입니다. 그것을 구입 .. 첫 번째 열은 CustCode, ItemCode, DateQuantity입니다. 이들은 4 열이며 나는 많은 행을 추가합니다.DataGrid의 모든 열을 SQL Server 2008 데이터베이스에 추가하는 방법

5 행을 datagridview에 삽입했습니다. 이제 모든 데이터를 SQL Server 2008 데이터베이스에 대한 datagridview .... 누군가가 전체 코드를 작성할 수 있습니까? 정말 혼란 스러워요, 내가 ... 작동하지 않는 것이이 코드는 당신이 당신의 그리드 셀 중 하나 이상을 가지고 내가 제대로 질문을 이해한다면 오류 ..null 매개 변수

SqlConnection con = new System.Data.SqlClient.SqlConnection(); 
con = new System.Data.SqlClient.SqlConnection(); 
con.ConnectionString = "Data Source=rex;Initial Catalog=Project DB 1;Integrated Security=True"; 

con.Open(); 
SqlDataAdapter da = new SqlDataAdapter(); 

for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++) 
{ 
    String insertData = "INSERT INTO SalesTable(CustCode,ItemCode,Date,Quantity) " + 
         "VALUES (@CustCode,@ItemCode,@Date,@Quantity)"; 

    SqlCommand cmd = new SqlCommand(insertData, con); 
    cmd.Parameters.AddWithValue("@CustCode", dataGridView1.Rows[i].Cells[0].Value); 
    cmd.Parameters.AddWithValue("@ItemCode", dataGridView1.Rows[i].Cells[1].Value); 
    cmd.Parameters.AddWithValue("@Date", dataGridView1.Rows[i].Cells[2].Value); 
    cmd.Parameters.AddWithValue("@Quantity", dataGridView1.Rows[i].Cells[3].Value); 

    da.InsertCommand = cmd; 
    cmd.ExecuteNonQuery(); 
} 
con.Close(); 

답변

1

제공하는 수행하는 값을 포함하고, 따라서 당신은 당신이 DBNull.Value

그래서 코드가

using(SqlConnection con = new System.Data.SqlClient.SqlConnection("Data Source=rex;Initial Catalog=Project DB 1;Integrated Security=True")) 
{ 
    con.Open(); 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 
     if(!row.IsNewRow) 
     { 
      String insertData = "INSERT INTO SalesTable(CustCode,ItemCode,Date,Quantity) " + 
           "VALUES (@CustCode,@ItemCode,@Date,@Quantity)"; 

      SqlCommand cmd = new SqlCommand(insertData, con); 
      cmd.Parameters.AddWithValue("@CustCode", row.Cells[0].Value ?? DbNull.Value); 
      cmd.Parameters.AddWithValue("@ItemCode", row.Cells[1].Value ?? DBNull.Value); 
      cmd.Parameters.AddWithValue("@Date", row.Cells[2].Value ?? DBNull.Value); 
      cmd.Parameters.AddWithValue("@Quantity", row.Cells[3].Value ?? DBNUll.Value); 
      cmd.ExecuteNonQuery(); 
     } 
    } 
} 
로 다시 작성할 수 있습니다 (매개 변수에 대한 값으로) 통과해야 데이터베이스 내부에 널 (null)을 삽입하려면 널 파라미터 유효을 얻을 수 없습니다

나는 C# Null Coalescing operator을 사용하여 i를 테스트했습니다. f 셀 중 하나의 값이 널입니다.
는 또한 나는 쓸모없는 데이터 어댑터를 제거하고 생성, 초기화를 고정하고에 DataGridViewRow에서 또한 연결

페이지의 IsNewRow Property을 배치 한

+0

스티브 @ .. 코드 ..하지만 작동합니다 ... 내가 4를 삽입하는 경우 rows .. 5 데이터베이스에 삽입 ... 5 번째 하나는 완전한 null 행을 삽입 .... plz 도움 – user2308205

+0

allowUserToAddRow 옵션의 DataGrid 옵션 때문에 추가 행이있었습니다 .. false로 설정 한 후 오류 (인덱스가 범위를 벗어났습니다. 음수가 아니고 컬렉션 크기보다 작아야합니다.) .. 제발 도와주세요 – user2308205

+0

그래서 새 행을 추가하려면 행 템플릿을 사용해야합니다. 이 경우 데이터베이스에이 행을 추가하지 않아야합니다. 페이지를 새로 고침하고 업데이트가 작동하는지 확인하십시오. – Steve

관련 문제