vb.net - 将常规查询转换为参数化查询的问题
问题描述
我遇到了这段看起来像这样的旧代码:
Dim sql As String = "exec wa_vterm_Insert_upd_Purchase_Card @merchant_id = '" & db.SqlSafe(sMerchantID) & "'" &
", @reference = '" & db.SqlSafe(reference) & "' " &
", @national_tax = " & nationalTax & " " &
", @customer_vat_number = '" & db.SqlSafe(customerVatNumber) & "' " &
", @discount_amount = " & discountAmount & " " &
", @duty_amount = " & dutyAmount & " " &
", @vat_invoice_number = '" & db.SqlSafe(vatInvoiceNumber) & "' " &
", @vat_tax_amount = " & vatTaxAmount & " " &
", @vat_tax_rate = " & vatTaxRate & " " &
", @destination_country_code = '" & db.SqlSafe(destCountryCode) & "' "
Trace.WriteLine(sql, LogLevel.Debug)
db.ExecuteNonQuery(sql)
我正在将其转换为参数化查询,并对其进行了编码:
Dim cmd As New SqlCommand("wa_vterm_Insert_upd_Purchase_Card", con)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@merchant_id", sqlDbType:=SqlDbType.VarChar).Value = sMerchantID
cmd.Parameters.Add("@reference", sqlDbType:=SqlDbType.VarChar).Value = reference
cmd.Parameters.Add("@national_tax", sqlDbType:=SqlDbType.VarChar).Value = nationalTax
cmd.Parameters.Add("@customer_vat_number", sqlDbType:=SqlDbType.VarChar).Value = customerVatNumber
cmd.Parameters.Add("@discount_amount", sqlDbType:=SqlDbType.VarChar).Value = discountAmount
cmd.Parameters.Add("@duty_amount", sqlDbType:=SqlDbType.VarChar).Value = dutyAmount
cmd.Parameters.Add("@vat_invoice_number", sqlDbType:=SqlDbType.VarChar).Value = vatInvoiceNumber
cmd.Parameters.Add(" @vat_tax_amount", sqlDbType:=SqlDbType.Decimal).Value = vatTaxAmount
cmd.Parameters.Add(" @vat_tax_rate", sqlDbType:=SqlDbType.Decimal).Value = vatTaxRate
cmd.Parameters.Add(" @destination_country_code", sqlDbType:=SqlDbType.VarChar).Value = destCountryCode
Try
cmd.Connection.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
Trace.WriteLine(ex.Message & ex.Source, LogLevel.Debug)
Finally
cmd.Connection.Close()
End Try
但是对于新的代码,我得到了这个异常:“过程或函数'wa_vterm_Insert_upd_Purchase_Card'需要参数'@vat_tax_amount',但没有提供。”
我不明白为什么?
解决方案
根据上面的建议,答案是@var_tax_amount 前面的空格
推荐阅读
- php - 获得产品折扣
- python - 在python中使用条件格式突出显示一个excel单元格
- google-app-maker - 将日期从 DateBox 转换为 simpleDate 并在应用程序制造商中获取年份
- bash - 当变量具有实际颜色名称时,如何以颜色打印字符串?
- python - ValueError:在二进制 SVM 上发现样本数量不一致的输入变量
- facebook - 我想要一个服务功能,就在写通过我的网站配置的帖子部分之前
- dynamics-crm - 来自动态 crm 2016 自定义工作流的 Http 请求无法访问某些 url
- mysql - 运行时错误 3001 '参数类型错误或超出可接受范围...' INSERT INTO MySQL 数据库
- swift - 使用编码键将值排除在解码之外
- pytorch - Pytorch 使用自定义数据集和 collate_fn() 向模型提供数据加载器批处理不起作用