Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中设置名称由字符串传递的变量值_C#_Variables - Fatal编程技术网

C# 在C中设置名称由字符串传递的变量值

C# 在C中设置名称由字符串传递的变量值,c#,variables,C#,Variables,我正在搜索一种方法,用于动态设置从数据库读取其名称和值的变量列表的值 我已经找到了很多获取变量名和值的代码,但是没有任何可以用于设置值的代码 我会试着更好地解释我自己。 设想有一个包含两列的数据库,比如name和value。 例如,假设您有两条记录: 1 Name=string1,Value=message1 2 Name=string2,Value=message2 我有读取这两条记录的代码,我想要的是一种从记录中获取变量名称的方法,并为它们分配相应的值 代码如下: SqlCommand cm

我正在搜索一种方法,用于动态设置从数据库读取其名称和值的变量列表的值

我已经找到了很多获取变量名和值的代码,但是没有任何可以用于设置值的代码

我会试着更好地解释我自己。 设想有一个包含两列的数据库,比如name和value。 例如,假设您有两条记录:

1 Name=string1,Value=message1 2 Name=string2,Value=message2

我有读取这两条记录的代码,我想要的是一种从记录中获取变量名称的方法,并为它们分配相应的值

代码如下:

SqlCommand cmd = new SqlCommand("Select Name, " + lng + " from dbo.traductions", Global.languageconn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
    var v1 = dr["Name"].ToString();
    var v2 = dr[lng].ToString();

    //Something here to assign the value stored in v2 to the variable whose name is stored in v1

}

谢谢大家

我不知道你们为什么要这么做,但为什么不使用字典呢

SqlCommand cmd = new SqlCommand("Select Name, " + lng + " from dbo.traductions", Global.languageconn);
SqlDataReader dr = cmd.ExecuteReader();
var variables = new Dictionary<string, string>();
while (dr.Read())
{
    var v1 = dr["Name"].ToString();
    var v2 = dr[lng].ToString();
    variables.Add(v1, v2);
}
更新:

我看到您添加了一条注释,说明您需要引用对象。您可以将字典改为保存对象。您没有提到类型,因此为了便于讨论,我假设它们都是文本框:

SqlCommand cmd = new SqlCommand("Select Name, " + lng + " from dbo.traductions", Global.languageconn);
    SqlDataReader dr = cmd.ExecuteReader();
    var variables = new Dictionary<string, object>();
    while (dr.Read())
    {
        var v1 = dr["Name"].ToString();
        var v2 = dr[lng].ToString();
        var textbox = new TextBox() { Text = v2 };
        variables.Add(v1, textbox);
    }

根据您的评论,您希望按名称访问控件;这是通过以下方式实现的:


为什么不创建一个包含name和value字段的类,并将您的SQL数据读入其中呢?因为我的变量马上就会变成组件的名称。例如,在数据库中,我会有这样的记录:Name=textbox1,Value1=Insert your Name,Value2=entrez votre nom,Value3=geben Sie Ihren Namen,Value4=Inserisci il tuo nome,根据我将读取的值,相应的组件必须在本例中接受该值消息。所以我需要一段代码,允许我引用从包含textbox1的变量传递过来的textbox1。因此,我需要一些可以根据数据库的查询结果进行友好操作的东西。或者,您可以在这些记录上设置一个语言标志,在类中包含一个语言字段,然后相应地选择适当的对象。是的,在一开始我想到这个解决方案,但是我的老板想让我用我解释过的方式使用数据库来实现这一点,所以我别无选择:例如,要读取一个值,可以使用如下内容:var fieldValue=source.GetType.getfield.GetValuesource;我需要做一些相反的事情,一些设置值的事情。它们主要是文本框、标签和一定数量的按钮和普通字符串变量。
SqlCommand cmd = new SqlCommand("Select Name, " + lng + " from dbo.traductions", Global.languageconn);
    SqlDataReader dr = cmd.ExecuteReader();
    var variables = new Dictionary<string, object>();
    while (dr.Read())
    {
        var v1 = dr["Name"].ToString();
        var v2 = dr[lng].ToString();
        var textbox = new TextBox() { Text = v2 };
        variables.Add(v1, textbox);
    }
var textbox= variables[v1];
Control ctl = this.Controls.Find(v1, true).FirstOrDefault();
if (ctl != null && ctl is TextBox)
{
    TextBox tb = (TextBox)ctl;
    tb.Text = v2;
}