c#
  • tsql
  • sql-server-2008-r2
  • 2011-04-06 35 views 0 likes 
    0

    我正在創建一個將csv文件讀入C#中的數據網格視圖的應用程序。該文件由項目編號和庫存等數據組成。從csv文件中檢索值並將其替換爲C#中的數據庫中的值

    如果料號相同,則應添加其庫存,然後用相同料號替換數據庫中的當前庫存。

    我能夠從csv文件添加庫存到數據庫中的相同商品編號的數據庫,但我無法替換庫存。

    這裏是我的代碼:

    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(); 
        } 
    

    我使用SQL Server 2008 R2。

    +1

    你能發佈你的代碼嗎? – WorldIsRound 2011-04-06 17:04:38

    +0

    string sql_select =「從PRODUCT中選擇count(*)where item_no ='」+ itemNo +「'」; SqlCommand cmdCheckPmk = new SqlCommand(sql_select,Class1.conn); int selectItemNo = Convert.ToInt32(cmdCheckPmk.ExecuteScalar()); if(selectItemNo!= 0) {sql_update =「update PRODUCTS set item_stock = +'」+ Stock +「'where item_no ='」+ itemNo +「'」; SqlCommand cmd1 = new SqlCommand(sql_update,Class1.conn); cmd1.ExecuteNonQuery(); } – 2011-04-06 17:09:18

    +0

    僅供參考,沒有「C#.NET」之類的東西。該語言被稱爲「C#」。 – 2011-04-06 17:31:09

    回答

    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:您能否告訴我該程序是否會添加庫存,並用數據庫的最終值替換庫存中的庫存。 – 2011-04-06 21:36:13

    +0

    @Rushabh:上面的例子將按照代碼顯示的內容,使用您提供的任何新值插入或更新股票。 – jp2code 2011-04-07 16:30:37

    +0

    我嘗試了上面的例子,但它不添加庫存並用數據庫中的現有值替換。它只是將股票的第二個值與相同的item_no取代,並將其替換爲數據庫,但不添加。 – 2011-04-07 18:52:23

    相關問題