Reputation: 640
Is it possible to write a query similar to the one in my code below where the column that is set can vary depending on user selection from the front end? In this case @Column
and @Value
are selected from an interface
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();
Upvotes: 0
Views: 115
Reputation: 13959
You cannot use column name as variable, instead you can use that from C# directly as below:
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();
Upvotes: 2