簡體   English   中英

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

[英]how to insert the same value from listbox to database

如何在不更改列表框到數據庫的值的情況下插入,我在數據庫中有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個列表框,其值為string,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();
            }
        }  

    }
}

編輯:更新了答案,以正確地從每個列表框獲取項目(如史蒂夫已經提到的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM