【发布时间】:2015-07-27 09:00:19
【问题描述】:
我正在尝试使用可选的 WHERE 参数创建 TableAdapter 查询。 这是我的查询:
SELECT Productos.Categoria, Productos.Subcategoria, Productos.Nombre,
Productos.Marca, Productos.Descripcion, Proveedores.Nombre AS Proveedor, Precios.Precio
FROM Precios, Productos, Proveedores
WHERE Precios.Producto_ID = Productos.ID AND Precios.Proveedor_ID =
Proveedores.ID AND Proveedores.Nombre = ?
我希望 "Proveedores.Nombre = ?" 是可选的,或者如果 ? = null 或无,查询不按 Proveedores.Nombre
过滤我试过这个:
(Proveedores.Nombre =@PNombre OR @PNombre = NULL)
但我有一个错误:
生成的 SELECT 语句:
“@”附近的 WHERE 子句出错。
无法解析查询文本
非常感谢您的帮助,
问候
安德烈斯
编辑: 我在一个 Windows 窗体项目中。我正在使用一个 DataSource - DataSet 链接到我的访问数据库。因此,为了创建 FillBy() 和 GetData(),我使用了一个表格适配器,它是在我将 DataSource 插入到我的 WindowsForm 时自动创建的。 这是我使用的 GetData() 所创建的方法:
public virtual DB_ProvProd2DataSet.ProductosDataTable GetDataByTodo(string Nombre) {
this.Adapter.SelectCommand = this.CommandCollection[5];
if ((Nombre == null)) {
throw new global::System.ArgumentNullException("Nombre");
}
else {
this.Adapter.SelectCommand.Parameters[0].Value = ((string)(Nombre));
}
DB_ProvProd2DataSet.ProductosDataTable dataTable = new DB_ProvProd2DataSet.ProductosDataTable();
this.Adapter.Fill(dataTable);
return dataTable;
}
其中 this.CommandCollection[5] = 查询,this.Adapter.SelectCommand.Parameters[0] 是与“?”相关的输入查询。
我希望这会有所帮助! 谢谢!!!
【问题讨论】:
标签: c# sql visual-studio-2013 tableadapter