2017-09-16 88 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

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

相关问题