C# 是否对未知列名使用参数?

C# 是否对未知列名使用参数?,c#,asp.net,sql-server,database,C#,Asp.net,Sql Server,Database,是否可以编写一个类似于下面代码中的查询,其中设置的列可以根据前端的用户选择而变化?在这种情况下,从界面中选择@列和@值 SqlConnection connect = new SqlConnection(ConfigurationManager.ConnectionStrings ["connectToEnterpriseAssignmentDB"].ToString()); SqlCommand cmd1 = new SqlCommand();

是否可以编写一个类似于下面代码中的查询,其中设置的列可以根据前端的用户选择而变化?在这种情况下,从界面中选择
@列
@值

  SqlConnection connect = new SqlConnection(ConfigurationManager.ConnectionStrings
["connectToEnterpriseAssignmentDB"].ToString());
                SqlCommand cmd1 = new SqlCommand();

                string currency = lstCurrency.SelectedItem.Value.ToString();
                string columnCurr = lstColumnCurr.SelectedItem.Value.ToString();
                double value = double.Parse(txtValue.Text);
                currency= currency.Trim();
                columnCurr=columnCurr.Trim();         

                cmd1.CommandText = "UPDATE CurrencyTbl SET @Column = '@Value' WHERE CurrencyName = '@Currency'";

                cmd1.Parameters.Add("@Currency", SqlDbType.Char).Value = currency;
                cmd1.Parameters.Add("@Column", SqlDbType.Char).Value = columnCurr;
                cmd1.Parameters.Add("@Value", SqlDbType.Float).Value = value;

                cmd1.Connection = connect;
                connect.Open();
                cmd1.ExecuteNonQuery();

                connect.Close();

您不能使用列名作为变量,而是可以直接从C#使用它,如下所示:

SqlConnection connect = new SqlConnection(ConfigurationManager.ConnectionStrings
["connectToEnterpriseAssignmentDB"].ToString());
                SqlCommand cmd1 = new SqlCommand();

                string currency = lstCurrency.SelectedItem.Value.ToString();
                string columnCurr = lstColumnCurr.SelectedItem.Value.ToString();
                double value = double.Parse(txtValue.Text);
                currency= currency.Trim();
                columnCurr=columnCurr.Trim();         

                cmd1.CommandText = "UPDATE CurrencyTbl SET "+columnCurr + " = '@Value' WHERE CurrencyName = '@Currency'";

                cmd1.Parameters.Add("@Currency", SqlDbType.Char).Value = currency;
                //cmd1.Parameters.Add("@Column", SqlDbType.Char).Value = columnCurr;
                cmd1.Parameters.Add("@Value", SqlDbType.Float).Value = value;

                cmd1.Connection = connect;
                connect.Open();
                cmd1.ExecuteNonQuery();

                connect.Close();

您不能使用列名作为变量,而是可以直接从C#使用它,如下所示:

SqlConnection connect = new SqlConnection(ConfigurationManager.ConnectionStrings
["connectToEnterpriseAssignmentDB"].ToString());
                SqlCommand cmd1 = new SqlCommand();

                string currency = lstCurrency.SelectedItem.Value.ToString();
                string columnCurr = lstColumnCurr.SelectedItem.Value.ToString();
                double value = double.Parse(txtValue.Text);
                currency= currency.Trim();
                columnCurr=columnCurr.Trim();         

                cmd1.CommandText = "UPDATE CurrencyTbl SET "+columnCurr + " = '@Value' WHERE CurrencyName = '@Currency'";

                cmd1.Parameters.Add("@Currency", SqlDbType.Char).Value = currency;
                //cmd1.Parameters.Add("@Column", SqlDbType.Char).Value = columnCurr;
                cmd1.Parameters.Add("@Value", SqlDbType.Float).Value = value;

                cmd1.Connection = connect;
                connect.Open();
                cmd1.ExecuteNonQuery();

                connect.Close();

不能使用参数表示列名。顺便说一下,“@Value”和“@Currency”不是参数占位符。单引号内的文本是文本(换句话说,您的代码搜索CurrencyName包含单词'@Currency'的记录)。您应该删除引号。您不能使用参数表示列名。顺便说一下,'@Value'和'@Currency'不是参数占位符。单引号内的文本是文本(换句话说,您的代码搜索CurrencyName包含单词“@Currency”的记录。您应该删除引号。我在获取将数据类型varchar转换为float时出错。有什么想法吗?我在获取将数据类型varchar转换为float时出错。有什么想法吗?