使用外部参数迭代查询

时间:2017-05-26 12:36:03

标签: sql asp.net

我正在开发一个电子商务网站。

这里是从购物车(数据表)到订单数据库的传递参数的代码。

val = 900 in iteration 1
val = 810 in iteration 2
...
val = 10 in iteration 49
val = 9 in iteration 50
value 9 repeats at iteration 50

这项工作正常,但只有购物车中的一件商品。 第一个问题,我如何迭代该代码?以便通过所有购物车订购db。 第二件事是订单号从我用作计数器的另一个数据库到达。 所以我不需要重复订单号,因为购物车中的所有商品都有相同的购物号

感谢帮助人员。

1 个答案:

答案 0 :(得分:3)

如果要将GridView中的所有行插入数据库,可以将插入代码放在a For loop中:

Dim con As SqlConnection
con = New SqlConnection("Data Source=NBK012\ARPASQL;Initial Catalog=aCommerceDB;Integrated Security=True")
con.Open()
Dim cmd As New SqlCommand("INSERT INTO [aOrdini] (ID,NomeProdotto,PrezzoProdotto,Quantità,NumeroOrdine) values(@ID,@NomeProdotto,@PrezzoProdotto,@Quantità,@NumeroOrdine)", con)

For i As Integer = 0 To GridView1.Rows.Count - 1

    cmd.Parameters.AddWithValue("@ID", GridView1.Rows(i).Cells(1).Text)
    cmd.Parameters.AddWithValue("@NomeProdotto", GridView1.Rows(i).Cells(2).Text)
    cmd.Parameters.AddWithValue("@PrezzoProdotto", GridView1.Rows(i).Cells(3).Text)
    cmd.Parameters.AddWithValue("@Quantità", GridView1.Rows(i).Cells(4).Text)
    cmd.Parameters.AddWithValue("@NumeroOrdine", TextBox9.Text)
    cmd.ExecuteNonQuery()

    cmd.Parameters.Clear()
Next

con.Close()

有关此代码的一些要点:

  • 看到我在循环中使用“.Rows(i)”,而不是“.Rows(1)”,以便在循环进行时从每一行获取Cell值
  • 请注意,在每次循环迭代结束时清除参数集合。这是为了防止添加重复参数,这是不允许的
  • 请注意,连接只打开一次,然后关闭一次,而不是在循环内打开和关闭。这是一种更高效的方法,但如果您有许多行
  • ,它确实会使连接保持打开状态很长时间