C# 如何将相同的值从列表框插入数据库

C# 如何将相同的值从列表框插入数据库,c#,mysql,sql,listbox,C#,Mysql,Sql,Listbox,如何在不更改列表框到数据库的值的情况下插入 我有3个列表框和数据库中的一个表,代码 private void Order() { using (SqlConnection connection = new SqlConnection(connectionString1)) { String query = "INSERT INTO Tbl_order (OrderName,Quantity,Price,Serves_way,Date

如何在不更改列表框到数据库的值的情况下插入 我有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();
                    }
                }  

        }
    }
private void Order()
{
使用(SqlConnection连接=新的SqlConnection(connectionString1))
{
String query=“插入Tbl_订单(订单名称、数量、价格、服务方式、日期)值(@OrderName、@Quantity、@Price、“+servers+”、“+time1.ToString(format1)+”);
connection.Open();
对于(int i=0;i
这样的3个列表框包含值字符串、int和double

以及数据库中插入的值,如下所示

如您所见,它们的值与列表框的值不同


如何将相同的值从列表框插入数据库?

您可以使用准备好的查询。通过添加参数及其数据类型来准备查询,列的长度是可选的。然后调用
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();
            }
        }  

    }
}
private void Order()
{
使用(SqlConnection连接=新的SqlConnection(connectionString1))
{
String query=“插入Tbl_订单(订单名称、数量、价格、服务方式、日期)值(@OrderName、@Quantity、@Price、“+servers+”、“+time1.ToString(format1)+”);
connection.Open();
使用(SqlCommand=newsqlcommand(查询、连接))
{
//将此文本列的长度添加为第三个参数。。。
Add(“OrderName”,SqlDbType.NVarChar);
添加(“数量”,SqlDbType.Int);
添加(“Price”,SqlDbType.Money);
command.Prepare();
对于(int i=0;i
编辑:
更新了答案以从每个列表框中正确获取项目(正如Steve已经提到的)

GetSelected返回选定的行而不是列表框中的任何行EAP我想知道如何在不选择它们的情况下将它们全部插入数据库Hello^^我已经尝试过了,但在数据库中仍然出现了相同的插入值问题,我不知道是什么问题。@MaxThunder回答已更新。通过访问列表框的
.Items
属性,指定
[
]
中的行索引,可以获取项目。返回的值始终是一个对象,因此您可能需要强制转换或将其转换为所需的类型。它很有效,我很高兴哈哈,非常感谢^^谢谢。