asp.net - 如何在sql参数列表中使用forloop?
问题描述
如何使用 dal 将我的数据 gridview 值添加到数据库中我的代码是这样的
Dim list As New List(Of SqlParameter)
For each row as DataGridView In DataGridView1.Rows
If row.cell(0).value isnot nothing
Qry="insert into sale1(Description)values(@1)"
With list
.add(new Sqlparameter("@1",row.cells(2).value)
End with
End if
Next
解决方案
如果您不想按照@jmcilhinney 在评论中建议的那样做(最好的方法),这应该与您提供的代码最接近,但它不会将数据库代码与用户界面代码分开。
这个想法是在循环外添加一次参数,然后只更改循环中的值。我不得不猜测参数的数据类型和大小。请检查您的数据库并更正代码。
Private Sub OPCode2()
Using cn As New SqlConnection("Your connection string"),
cmd As New SqlCommand("insert into sale1 (Description)values(@1)", cn)
cmd.Parameters.Add("@1", SqlDbType.NVarChar, 300)
cn.Open()
For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells(0).Value IsNot Nothing Then
cmd.Parameters("@1").Value = row.Cells(2).Value
cmd.ExecuteNonQuery()
End If
Next
End Using
End Sub
将代码分开...
Private Sub UICode()
Dim lst As New List(Of String)
For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells(0).Value IsNot Nothing Then
lst.Add(row.Cells(2).Value.ToString)
End If
Next
UpdateDatabase(lst)
End Sub
Private Sub UpdateDatabase(lst As List(Of String))
Using cn As New SqlConnection("Your connection string"),
cmd As New SqlCommand("insert into sale1 (Description)values(@1)", cn)
cmd.Parameters.Add("@1", SqlDbType.NVarChar, 300)
cn.Open()
For Each s As String In lst
cmd.Parameters("@1").Value = s
cmd.ExecuteNonQuery()
Next
End Using
End Sub
推荐阅读
- laravel-5.7 - Laravel 5.7 动态速率限制不起作用
- playframework - 在所有活动线程完成之前,Play Framework http 响应不会释放
- r - 在 Ubuntu 18.04 上安装包 testthat R 的问题
- android - 使用 Scanner 查找字符串中的值
- reactjs - 我是否在 React 中为后端的每个表创建一个新视图?
- android - 如何使用 OAuth2 在我的改造中添加标题?
- php - 不支持请求方法“POST”(Spring Boot)
- python - 在机器人框架中设置默认文件上传文件夹(目录)
- java - 启用 Netflix Zuul 将流量重定向到另一台主机上的容器
- python - 有没有办法在 WagtailCMS 的 InlinePanel 中对相关的 Orderable 执行验证?