我有一个带有复选框的gridview,选中后会将所选项目插入两个数据库。错误发生在特定的插入参数,即数据类型为nvarchar。我不确定为什么它会给我一个布尔错误。任何帮助将不胜感激,我可以根据需要发布代码。
答案 0 :(得分:2)
好的,让我们开始吧。首先,这必须改变:
sqlds1.UpdateCommand = String.Format(
"UPDATE Fees SET Inactive = '1' WHERE Description = '{0}'",
Request("cbusno"))
到此:
sqlds1.UpdateCommand = "UPDATE Fees SET Inactive = '1' WHERE Description = @Desc"
sqlds1.UpdateCommand.Parameters.AddWithValue("@Desc", Request("cbusno"))
接下来,这必须改变:
sqlds2.UpdateCommand = String.Format(
"UPDATE OLLicenses SET lactive = '1' WHERE cbusno = '{0}'",
Request("cbusno"))
到此:
sqlds2.UpdateCommand = "UPDATE OLLicenses SET lactive = '1' WHERE cbusno = @no")
sqlds2.UpdateCommand.Parameters.AddWithValue("@no", Request("cbusno"))
接下来,您需要在此处使用其他API:
Sqldatasource1.Clear()
Sqldatasource1.InsertParameters.Add("cbusno", Request("cbusno"))
Sqldatasource1.InsertParameters.Add("licsubcategory", tb5.Text)
Sqldatasource1.InsertParameters.Add("description", tb5.Text)
Sqldatasource1.InsertParameters.Add("nfee", tb2.Text)
Sqldatasource1.InsertParameters.Add("lactive", "0")
Sqldatasource1.InsertParameters.Add("tadded", DateTime.Now.ToString())
Sqldatasource1.InsertParameters.Add("cuserid", Session("Username"))
Sqldatasource1.InsertParameters.Add("myfield", Request("myfield"))
Sqldatasource1.Insert()
这允许数据源为您处理输入。
与此块相同:
SqldatasourceFee.InsertParameters.Add("myfield", Request("myfield"))
SqldatasourceFee.InsertParameters.Add("Amount", tb2.Text)
SqldatasourceFee.InsertParameters.Add("CalculatorDescription", (string)clicnotxt.Table(0)(0))
SqldatasourceFee.InsertParameters.Add("Dept", "Business Tax")
SqldatasourceFee.InsertParameters.Add("Module", "Business Tax")
SqldatasourceFee.InsertParameters.Add("Type", tb4.Text)
SqldatasourceFee.InsertParameters.Add("SubType", tb5.Text)
SqldatasourceFee.InsertParameters.Add("Inactive", "0")
SqldatasourceFee.InsertParameters.Add("UserCreated", Session("Username"))
SqldatasourceFee.InsertParameters.Add("Description", Request("cbusno"))
SqldatasourceFee.Insert()
现在,请注意几件事。首先,请注意我已将此值投放到string
此处(string)clicnotxt.Table(0)(0)
。这个值对我很怀疑,但我不相信这是你错误的根源。我认为这里的问题是这样的:
SqldatasourceFee.InsertParameters.Add("Inactive", "0")
我在想,但不能100%肯定,它应该是:
SqldatasourceFee.InsertParameters.Add("Inactive", "False")
最后,当您构建SqlDataSource
内嵌时,如下所示:
Dim sqlds1 As SqlDataSource = New SqlDataSource()
您需要将其包装在Using
中,因为它实现了IDisposable
:
Using sqlds1 As SqlDataSource = New SqlDataSource()
sqlds1.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("myconnectionstring").ConnectionString
sqlds1.UpdateCommand = "UPDATE Fees SET Inactive = '1' WHERE Description = @Desc"
sqlds1.UpdateCommand.Parameters.AddWithValue("@Desc", Request("cbusno"))
End Using