sql server - c# (ADO.NET)传递变量作为构造函数参数
本文关键字:变量 参数 构造函数 server NET ADO sql | 更新日期: 2023-09-27 17:49:24
我有2个表单,类别和产品,它们连接到一个数据源(数据库)。
这个想法是,我希望应用程序首先加载表单类别,它显示有关现有类别的一些信息。
当我点击按钮产品时,产品表单应该出现,在类别表单
中显示当前选择的类别名称和ID的产品我几乎已经完成了工作,但是我被困在如何将类别表单的类别id和名称的值传递给产品表单中的值,然后显示相应的数据,
到目前为止,我创建了一个字符串变量,它接受类别文本框的值textbox.text
,然后我在products
表单中创建了一个类别表单的对象然后我编写了以下代码,它连接到数据库,并从id等于类别表单id的表"products"中选择数据:
Categories cat = new Categories();
SqlCeConnection con = new SqlCeConnection("Data Source = Northwind40.sdf");
SqlCeDataAdapter da = new SqlCeDataAdapter("select * from products where [Category ID] = '" + cat.currID + "'", con);
DataSet ds = new DataSet();
da.Fill(ds, "Products");
BindingSource bs = new BindingSource(ds, "Products");
this.productsBindingSource = bs;
但这段代码只显示了一个结果,即所选类别id
的第一个产品那么我该怎么做呢?
这里的问题是您没有使用正确的Categories
表单实例。您已经创建了一个新实例,其中没有用户选择的任何ID值。
一种方法是使用Product
形式的参数化构造函数。然后,在Category表单中的Product按钮的按钮单击事件上:
Product productForm = new ProductForm("send selected values here");
在Product表单构造函数中,
string _selectedValues;
private Product(){
// Code here
}
public Product(string selectedValues):this(){
_selectedValues = selectedValues;
}
您可以根据需要选择参数的数据类型
此查询' select * from products where [Category ID]...
可能只返回一行。尝试替换以下行:
//SqlCeDataAdapter da = new SqlCeDataAdapter("select * from products where [Category ID] = '" + cat.currID + "'", con);
SqlCeDataAdapter da = new SqlCeDataAdapter("select * from products", con);