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时出错。有什么想法吗?