如何在sql server数据库中保存来自各种控件的多个值
本文关键字:控件 sql server 数据库 保存 | 更新日期: 2023-09-27 18:15:41
我正在设计使用三层架构的windows应用程序。我的一个表单包含动态生成的控件。我的问题是,我如何保存多个值从控件在我的数据库。我已经使用返回语句,但由于它只返回一个值,我的数据库只存储来自每个控件的一个值。基本上,我正在创建BILL FORM。
我为每个控件创建了8个方法,并在业务逻辑层的功能中传递它们的值,但不是保存多个值,而是只保存上面提到的每个控件的一个值。我也尝试使用元组,但随后它给了我"转换异常"
我的8个方法之一是:
public string combo_box_1()
{
foreach (Control ctrl in this.Controls)
{
if (ctrl is ComboBox)
{
if (ctrl.Name.Equals("combo_box_1"))
{
string main_category = ctrl.Text;
string[] arr1 = { main_category };
foreach (string alph in arr1)
{
MessageBox.Show(alph);
return alph;
}
return main_category;
}
}
}
return null;
}
它是元组版本:
public Tuple<string> combo_box_1()
{
foreach (Control ctrl in this.Controls)
{
if (ctrl is ComboBox)
{
if (ctrl.Name.Equals("combo_box_1"))
{
string main_category = ctrl.Text;
Tuple<string> txt2 = new Tuple<string>(main_category);
return txt2;
}
}
}
return null;
}
我的业务层函数(元组版本):
public bool save_bill(Tuple<string> CB1, Tuple<string> CB2, Tuple<string> CB3, Tuple<string> CB4, Tuple<string> NUD1, Tuple<string> CB5, Tuple<string> TB1, Tuple<string> TB2)
{
try
{
DAL obj = new DAL();
obj.OpenConnection();
obj.LoadSpParameters("save_bill", CB1, CB2, CB3, CB4, NUD1, CB5, TB1, TB2);
obj.ExecuteQuery();
obj.UnLoadSpParameters();
obj.CloseConnection();
return true;
}
catch (Exception)
{
return false;
}
}
我的保存按钮背后的编程(元组版本):
private void save_button_Click(object sender, EventArgs e)
{
BLL obj = new BLL();
bool obj2 = obj.save_bill(combo_box_1(), combo_box_2(), combo_box_3(), combo_box_4(), numeric_up_down_1(), combo_box_5(), txt_box_1(), txt_box_2());
if (obj2 == true)
{
MessageBox.Show("bill saved");
}
else
{
MessageBox.Show("bill cannot be saved");
}
}
我必须承认我有困难理解你的代码,但我认为这可能会有所帮助:更改save_bill方法以接受字符串参数,不需要元组
public bool save_bill(Tuple<string> CB1, Tuple<string> CB2, Tuple<string> CB3
, Tuple<string> CB4, Tuple<string> NUD1, Tuple<string> CB5, Tuple<string> TB1
, Tuple<string> TB2)
public bool save_bill(string CB1, string CB2, string CB3, string CB4
, string NUD1, string CB5, string TB1, string TB2)
,而不是为每个控件使用8个(奇怪的)方法
bool obj2 = obj.save_bill(combo_box_1(), combo_box_2(), combo_box_3()
, combo_box_4(), numeric_up_down_1(), combo_box_5(), txt_box_1(), txt_box_2());
使用this并直接访问它们的值
bool obj2 = obj.save_bill(combo_box_1.Text, combo_box_2.Text
, combo_box_3.Text, combo_box_4.Text, numeric_up_down_1.Value.ToString()
, combo_box_5.Text, txt_box_1.Text, txt_box_2.Text);
有一些问题,比如你真的需要ComboBox吗?文本而不是SelectedID或者如果控件是动态创建的,那么你不应该通过它们的名称等来引用它们,但希望这有助于