2011-04-06 4 views
0

Csv 파일을 C#의 데이터 표보기로 읽는 응용 프로그램을 만들고 있습니다. 파일은 품목 번호 및 재고와 같은 데이터로 구성됩니다.csv 파일에서 값 가져 오기 및 C# 데이터베이스의 바꾸기

품목 번호가 동일하면 해당 재고가 추가되어야하고 데이터베이스의 현재 재고가 동일한 품목 번호로 대체되어야합니다.

데이터베이스의 동일한 항목 번호를 사용하여 CSV 파일의 재고를 데이터베이스에 추가 할 수 있지만 재고를 대체 할 수 없습니다. 내가 SQL 서버 2008 R2를 사용하고

string sql_select = "select count(*) from PRODUCTS where item_no= '" + 
          itemNo + "'"; 
    SqlCommand cmdCheckPmk = new SqlCommand(sql_select, Class1.conn); 

    int selectItemNo = Convert.ToInt32(cmdCheckPmk.ExecuteScalar()); 

    if (selectItemNo != 0) 
    { 
     string sql_update = "update PRODUCTS set item_stock=+'" + Stock + 
          "' where item_no= '" + itemNo + "'"; 
     SqlCommand cmd1 = new SqlCommand(sql_update, Class1.conn); 
    } 
    else 
    { 
     SqlCommand cmd11 = new SqlCommand("insert into PRODUCTS(item_no,item_name,price,cost,item_stock,dept_id,tax_rate1,tax_rate2,bulk_price,bulk_qty) values ('" + itemNo + "','" + itemName + "'," + price + "," + cost + "," + Stock + ",'" + dept + "','" + tax1 + "','" + tax2 + "'," + BulkPrize +"," + BulkQty +") ", Class1.conn); 
     cmd11.ExecuteNonQuery(); 
    } 

:

여기 내 코드입니다.

+1

코드를 게시 할 수 있습니까? – WorldIsRound

+0

string sql_select = "제품에서 count (*)를 선택하십시오. 여기서 item_no = '"+ itemNo + "'"; SqlCommand cmdCheckPmk = 새 SqlCommand (sql_select, Class1.conn); int selectItemNo = Convert.ToInt32 (cmdCheckPmk.ExecuteScalar()); if (selectItemNo! = 0) { 문자열 sql_update = "업데이트 PRODUCTS 세트 item_stock = + '"+ Stock + "'item_no = '"+ itemNo + "'"; SqlCommand cmd1 = 새 SqlCommand (sql_update, Class1.conn); cmd1.ExecuteNonQuery(); } –

+0

참고로 "C# .NET"과 같은 것은 없습니다. 언어는 "C#"입니다. –

답변

0

위 예제는 약간의 문제가 많았습니다.

아래의 기본 예제를보다 나은 방법으로 연구하십시오.

// Pass in your SQL Connection object so you do not have to worry about 
// multiple open connections 
public int jp2Test(SqlConnection conn) { 
    // Verify someone did not pass in a NULL object 
    if (conn != null) { 
    string sql_text = "select count(*) from PRODUCTS where [email protected]_no"; 
    using (SqlCommand cmd = new SqlCommand(sql_text, conn)) { 
     // Get in the habit of using Parameters. If you know the SqlDbType, use one of 
     // the Parameter overloads that provides for this. 
     cmd.Parameters.AddWithValue("@item_no", itemNo); 
     // Open the connection if it is not already 
     if ((cmd.Connection.State & ConnectionState.Open) != ConnectionState.Open) { 
     cmd.Connection.Open(); 
     } 
     // initialize an item_number variable 
     int selectedItemNo = -1; 
     object value = cmd.ExecuteScalar(); 
     // Check for both NULL and DBNull 
     if ((value != null) && (value != DBNull.Value)) { 
     selectedItemNo = Convert.ToInt32(value); 
     } 
     // Update your SQL Text based on the value you received. 
     if (0 < selectedItemNo) { 
     sql_text = "update PRODUCTS set [email protected]_stock where [email protected]_no"; 
     // this value is already included 
     // cmd.Parameters.AddWithValue("@item_no", itemNo); 
     // this is a common value that will be added after the conditional 
     // cmd.Parameters.AddWithValue("@item_stock", Stock); 
     } else { 
     sql_text = "insert into PRODUCTS" + 
      " (item_no, item_name, price, cost, item_stock, dept_id, tax_rate1, tax_rate2, bulk_price, bulk_qty)" + 
      " values " + 
      "(@item_no,@item_name,@price,@cost,@item_stock,@dept_id,@tax_rate1,@tax_rate2,@bulk_price,@bulk_qty)"; 
     // this value is already included 
     // cmd.Parameters.AddWithValue("@item_no", itemNo); 
     cmd.Parameters.AddWithValue("@item_name", itemName); 
     cmd.Parameters.AddWithValue("@price", price); 
     cmd.Parameters.AddWithValue("@cost", cost); 
     // this is a common value that will be added after the conditional 
     // cmd.Parameters.AddWithValue("@item_stock", Stock); 
     cmd.Parameters.AddWithValue("@dept_id", dept); 
     cmd.Parameters.AddWithValue("@tax_rate1", tax1); 
     cmd.Parameters.AddWithValue("@tax_rate2", tax2); 
     cmd.Parameters.AddWithValue("@bulk_price", BulkPrize); 
     cmd.Parameters.AddWithValue("@bulk_qty", BulkQty); 
     } 
     cmd.CommandText = sql_text; 
     cmd.Parameters.AddWithValue("@item_stock", Stock); 
     // Return the number of SQL records that were affected. 
     return cmd.ExecuteNonQuery(); 
    } 
    } 
    // return -1 on Error 
    return -1; 
} 
+0

@ jp @ code :이 프로그램이 주식을 추가하고 데이터베이스의 주식을 최종 가치로 대체할지 여부를 알려주십시오. –

+0

@Rushabh : 위의 예제는 코드가 보여 주듯이 여러분이 제공 한 새로운 값으로 주식을 삽입하거나 업데이트합니다. – jp2code

+0

위의 예제를 시도했지만 스톡을 추가하지 않고 데이터베이스의 기존 값으로 대체하지 않습니다. 그것은 단지 같은 item_no와 주식의 두 번째 가치를 가지고 데이터베이스로 교체, 그것은 추가하지 않습니다. –

관련 문제