SqlCommand 和 SqlDataAapter 的参数
Posted
技术标签:
【中文标题】SqlCommand 和 SqlDataAapter 的参数【英文标题】:Parameters to SqlCommand and SqlDataAtapter 【发布时间】:2016-07-22 22:33:05 【问题描述】:一直使用 SQLDataAdapter 和 Fill 命令进行数据获取查询,并使用 executenonquery 进行插入、更新、删除查询。
我遇到了问题,无法弄清楚我做错了什么。 我有一个绑定到 RadGrid 的 DataTable。 DataTable 获取公司收据的特定月份的数据,并生成一个包含我们需要的信息的额外列。
我从 RadControl 中得到一个选定的月份,并在按下按钮后发送数据:
Protected Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
Dim fecha As Date
fecha = RadMonthYearPicker1.DbSelectedDate
miDataTable = objOPRecibo.FacturasEspeciales(fecha.Month, fecha.Year)
RadGrid1.Rebind()
End Sub
这是被调用对象中的函数:
Public Function FacturasEspeciales(Mes As Integer, Anio As Integer) As DataTable
Dim FEDataTable As New DataTable
Using conection As New SqlConnection(constr)
Using cmd As New SqlCommand(@"SELECT
SUM(Det_Recibo.dCantidad) Cantidad,
Producto.Nombre,
SUM(Det_Recibo.mTotal) Valor,
SUM((((Det_Recibo.mTotal*100)/95)*1.12)) ESPE
FROM Det_Recibo
INNER JOIN Enc_Recibo
ON Det_Recibo.idRecibo = Enc_Recibo.idRecibo
INNER JOIN Producto
ON Det_Recibo.idProducto = Producto.IdProducto
WHERE MONTH(Enc_Recibo.dFechaFact)=@Mes AND
YEAR(Enc_Recibo.dFechaFact)=@Anio
Producto.idGasto = 1 OR Producto.idGasto = 2
GROUP BY Producto.Nombre")
cmd.Parameters.AddWithValue("@Mes", Mes)
cmd.Parameters.AddWithValue("@Anio", Anio)
Dim sda As New SqlDataAdapter(cmd.CommandText, conection)
sda.Fill(FEDataTable)
End Using
End Using
'Return DataTable
Return FEDataTable
End Function
我m 得到@Mes 的未定义标量错误或第二个不特定于 sda.Fill 行的错误。
我是个新手,经过数小时的研究后,我就是不知道我做错了什么。
任何帮助将不胜感激
【问题讨论】:
试试Dim sda As New SqlDataAdapter(cmd)
您在 YEAR 条件之后和 Producto 条件之前缺少 AND/OR 运算符。使用逐字的@字符串可以清楚地说明问题。
感谢史蒂夫回到我的桌面时会检查一下
【参考方案1】:
可能是因为缺少connection.Open()
Using conection As New SqlConnection(constr)
conection.open()
<REST OF YOUR CODE>
【讨论】:
SqlDataAdapter 在连接关闭时打开连接。 史蒂夫谢谢...很高兴知道。 @LarsTech 有更好的答案。以上是关于SqlCommand 和 SqlDataAapter 的参数的主要内容,如果未能解决你的问题,请参考以下文章
SqlCommand 和 SqlDataAapter 的参数
为IDBCommand和SqlCommand.ExecuteNonQueryAsync实现异步ExecuteNonQuery()
SqlCommand和SqlDataAdapter有什么区别
SqlCommand 超时,CommandTimeout 和 ConnectionTimeout 都 = 0