Sql 将多个textbox控件绑定到数据库行

Sql 将多个textbox控件绑定到数据库行,sql,database,data-binding,textbox,Sql,Database,Data Binding,Textbox,我试图将我的应用程序的一些参数存储在数据库表中。该表包含多行,其中包含键->值关系。在我的windows窗体程序(用C#编写)中,我有多个控件,允许用户与数据库中存储的配置进行交互 例如,我的数据库表如下所示: id option_name option_value 1 serial_port_baudrate 9600 2 serial_port_stopbits one 在我的表单上,我有允许更改这些值的控件。经过一段时间后,我使用bin

我试图将我的应用程序的一些参数存储在数据库表中。该表包含多行,其中包含键->值关系。在我的windows窗体程序(用C#编写)中,我有多个控件,允许用户与数据库中存储的配置进行交互

例如,我的数据库表如下所示:

id option_name               option_value
1  serial_port_baudrate      9600
2  serial_port_stopbits      one
在我的表单上,我有允许更改这些值的控件。经过一段时间后,我使用
bindingSource
类和
filter
属性获得了预期的结果。但是我必须使用可视化编辑器为每个文本框创建bindingSource对象。你能帮我在不使用可视化编辑器的情况下用多个文本框和控件来归档吗

我不知道这是否可行,但我想编写一个解决方案,在这个解决方案中,我可以用保存数据库中值的键的相同名称命名表单上的文本框,然后在应用程序运行时它们将获得正确的值。如果您能提供任何信息或提示,我将不胜感激


提前感谢。

好吧,您可以将所有文本框命名为与数据库字段相同的名称,然后循环遍历表单上的所有文本框控件。使用表单名称作为参数,如下代码所示:

 DataTable table = new DataTable();

            //Populate datatable
    TextBox txt = new TextBox();
          foreach(DataRow row in table.Rows)
        {
            String controlID = row["option_name"].ToString();


              txt.ID = controlID;

              (new TextBox()).ID = controlID;

              txt.Text = table.Rows[table.Rows.IndexOf(row)][controlID].ToString();
        }

这是我在选项表中使用的内容:

    void loadOptions(Control parent)
    {
        foreach (Control c in parent.Controls)
        {
            DataRow[] res = options.Select("option='" + c.Name + "'");
            if (c is GroupBox)
            {
                loadOptions(c);
                continue;
            }
            if (res.Length < 1) continue;
            DataRow row = (DataRow)res.GetValue(0);
            String value = row["value"].ToString();
            if (c is TextBox)
            {
                c.Text = value;
            }
            else if (c is CheckBox)
            {
                ((CheckBox)c).Checked = Convert.ToBoolean(value);
            }
            else if (c is NumericUpDown)
            {
                ((NumericUpDown)c).Value = int.Parse(value);
            }
        }
    }
void加载选项(控制父项)
{
foreach(父控件中的控件c)
{
DataRow[]res=options.Select(“option=”+c.Name+”);
if(c是GroupBox)
{
装载选项(c);
继续;
}
如果(分辨率长度<1)继续;
DataRow row=(DataRow)res.GetValue(0);
字符串值=行[“值”]。ToString();
如果(c是文本框)
{
c、 文本=值;
}
else if(c为复选框)
{
((复选框)c).Checked=Convert.ToBoolean(值);
}
else if(c为数字向上向下)
{
((NumericUpDown)c).Value=int.Parse(Value);
}
}
}

我不确定这是否是最好的解决方案,但它是有效的。如果有人有更好的方法,我总是在寻找。

对不起,我忘了指定。我正在使用C#Visual Studio 2005和SQL 2005开发Windows应用程序。