我在SQL表中有一些像text_en,text_es,text_de这样的列。现在我想根据语言从一列中检索值。
所以我创建了一个sql字符串
SELECT @textfield FROM <table>
在我使用的vb代码中
cmd.AddWithValue("textfield", "text_" + lang)
但是sql返回列的名称而不是该列的值。我怎样才能获得价值?
答案 0 :(得分:3)
您也可以
SELECT CASE @textfield
WHEN 'text_en' THEN text_en
WHEN 'text_es' THEN text_es
WHEN 'text_de' THEN text_de
END AS local_text
FROM TableName
答案 1 :(得分:2)
不要将其作为参数传递,将其作为字符串文字传递。您的sql语句应采用以下格式:
string col1name = 'somename';
string sql = 'SELECT ' + col1name + ' FROM TableName';
但是如果你有一个传递给WHERE
子句的参数,你应该将它作为参数传递给你,就像你在问题中所做的那样。
请注意:您的查询,这种方式容易受到SQL Injection的攻击。在您的情况下,您可以将连接的SQL语句传递给存储过程,然后使用sp_executesql
,而不是EXEC()
。
答案 2 :(得分:2)