【发布时间】:2016-07-25 16:29:34
【问题描述】:
在我的 for 循环中,我正在编写一个插入和删除查询,它执行以下操作:
如果未选中复选框,则检查记录是否存在,如果存在则删除。如果它不存在,则什么也不做。
如果选中复选框,则还要检查记录是否存在,如果存在则不执行任何操作,如果不存在则插入。
我需要检查我的查询,尤其是我的子查询是否会正确执行或返回错误,因为我正在编写它而不想立即更改我的数据库。
For Each oDataGridItem In valgrid2.Items
chk = oDataGridItem.FindControl("CheckBox1")
rn = oDataGridItem.FindControl("lblrptName")
rid = oDataGridItem.FindControl("lblReportID")
If chk.Checked = True Then
rpti = CType(oDataGridItem.FindControl("lblReportID"), Label).Text
'valsql2 = "INSERT INTO CompanyReportListTable(CompanyID, ReportID) Values (valCompanyId, rpti) WHERE NOT EXISTS(SELECT * FROM CompanyReportListTable WHERE ReportID <> rpti and companyid <> valCompanyId and " & chk.Checked & "= 1)"
'if it exists then don’t do anything
'valsql2 = valsq2 & ";IF ReportID = rpti and companyid = valCompanyId BEGIN WHERE CompanyID = CompanyID AND ReportID = ReportID END"
'To do nothing, i'd equal the parameter's value to the column name
count += 1
rptn = CType(oDataGridItem.FindControl("lblrptName"), Label).Text
oExArgs.Add(rptn)
Response.Write(rpti + " - " + rptn + "<br/>")
Else
'valsql2 = valsq2 & ";DELETE FROM CompanyReportListTable WHERE EXISTS(Select * FROM CompanyReportListTable WHERE ReportID = rpti and companyid = valCompanyId and" & chk.Checked & " = 0)"
'if it doesn't exist then don’t do anything
'valsql2 = valsq2 & ";IF ReportID <> rpti and companyid <> valCompanyId BEGIN WHERE CompanyID = CompanyID AND ReportID = ReportID END"
End If
【问题讨论】:
-
你试过运行它们吗?发生什么了?你有错误吗?它会改变正确的数据吗?
-
我从其中一个子查询中得到一个错误,但我只运行了一次,因为我不想在那一刻更改我的数据库,直到我编写了正确的语句。
-
如果用户同时选中两个框会怎样?
-
那么选中复选框的两条记录都必须不存在,以便我将数据插入列中。如果两者都存在,则什么也不做。
-
为开发制作一个数据库副本是最安全的。您可以在 SQL Server Management Studio 中编写 SQL 语句,以便获得正确的语法。我可以看到您的代码存在太多问题,因为我需要列出它们及其可能的解决方案。
标签: sql-server vb.net