2017-09-16 58 views
0

如何插入,而不從列表框中將值更改爲數據庫 我有3個表盒,並在數據庫中,該代碼表...如何從列表框中插入相同的值,數據庫

private void Order() 
    { 
     using (SqlConnection connection = new SqlConnection(connectionString1)) 
     { 
      String query = "INSERT INTO Tbl_order (OrderName,Quantity,Price,Serves_way,Date) VALUES (@OrderName,@Quantity, @Price,'"+servers+"','" + time1.ToString(format1)+"')"; 


       connection.Open(); 

       for (int i = 0; i < lst_OrderName.Items.Count; i++) 
       { 
        using (SqlCommand command = new SqlCommand(query, connection)) 
        { 
         command.Parameters.Add("OrderName", SqlDbType.NVarChar).Value = lst_OrderName.GetItemText(lst_OrderName.GetSelected(i)); 
         command.Parameters.Add("Quantity", SqlDbType.Int).Value = Convert.ToInt32(lst_QTY.GetSelected(i)); 
         command.Parameters.Add("Price", SqlDbType.Money).Value = Convert.ToDouble(lst_Price2.GetSelected(i)); 

         /* command.Parameters.AddWithValue("@OrderName", lst_OrderName.GetItemText(lst_OrderName.Items)); 
         command.Parameters.AddWithValue("@Quantity", lst_QTY.GetItemText(lst_QTY.Items)); 
         command.Parameters.AddWithValue("@Price", lst_Price2.GetItemText(lst_Price2.Items));*/ 

        command.ExecuteNonQuery(); 
        } 
       } 

     } 
    } 

所以3個列表框這樣值爲字符串,int和double

enter image description here

並在數據庫中,如插入的值這

enter image description here

正如你看到的,他們是不一樣的值列表框值

如何插入相同的值從列表框中數據庫?

+0

GetSelected返回選中的行不是你列表框的任何一行 – Steve

+0

yeap我想知道如何將它們全部插入到數據庫而不選擇全部 –

回答

1

您可以使用準備好的查詢。您通過添加參數及其數據類型來準備查詢,列的長度是可選的。然後致電Prepare()。之後,你通過索引或列名,最後調用指定數據的參數ExecuteNonQuery

private void Order() 
{ 
    using (SqlConnection connection = new SqlConnection(connectionString1)) 
    { 
     String query = "INSERT INTO Tbl_order (OrderName,Quantity,Price,Serves_way,Date) VALUES (@OrderName,@Quantity, @Price,'"+servers+"','" + time1.ToString(format1)+"')"; 


     connection.Open(); 
     using (SqlCommand command = new SqlCommand(query, connection)) 
     { 
      // Add the length of this text column as third parameter... 
      command.Parameters.Add("OrderName", SqlDbType.NVarChar); 
      command.Parameters.Add("Quantity", SqlDbType.Int); 
      command.Parameters.Add("Price", SqlDbType.Money); 
      command.Prepare(); 

      for (int i = 0; i < lst_OrderName.Items.Count; i++) 
      { 
       // Dont know if the .ToString() calls are necessary... 
       command.Parameters[0].Value = lst_OrderName.GetItemText(lst_OrderName.Items[i].ToString()); 
       command.Parameters[1].Value = Convert.ToInt32(lst_QTY.Items[i].ToString()); 
       command.Parameters[2].Value = Convert.ToDouble(lst_Price2.Items[i].ToString()); 
       command.ExecuteNonQuery(); 
      } 
     } 

    } 
} 

編輯: 更新了答案,從每個列表框正確地拿到物品(如史蒂夫已經提到)

+0

hello ^^我已經嘗試過但仍然在數據庫中給出了同樣的插入值問題我不知道哪裏不對 。 –

+1

@MaxThunder Answer已更新。您通過訪問ListBox的'.Items'屬性來獲取Items,並在'['和']'中指定行索引。返回值始終是一個對象,因此您可能必須將其轉換或轉換爲您需要的類型。 – Michael

+0

它的工作原理,我很高興哈哈非常感謝^^謝謝。 –

相關問題