如何将表名和选定的字段作为参数传递

时间:2013-02-07 09:57:10

标签: c# asp.net informix parameterized-query

我收到以下错误:

  

错误:-201   MEssage:[Informix .NET provider] [Informix]发生了语法错误。

当我尝试执行此代码时:

string table_name = resultDt.Rows[0][1].ToString();
string pdf_column = resultDt.Rows[0][0].ToString();
st.Append(" SELECT  ? FROM ?");
paramList.Clear();
paramList.Add("@tablename", table_name);
paramList.Add("@pdf_column", pdf_column);
resultDt =dalHelper.Return_DataTable(st.ToString(), CommandType.Text, paramList);
return resultDt;

1 个答案:

答案 0 :(得分:3)

你不能。

请改用String.Replace。

st.Append(" SELECT @pdf_column FROM @tablename");
st.Replace("@tablename", table_name);
st.Replace("@pdf_column", pdf_column);

如果table_name和pdf_column来自用户输入,你应该使用QuoteName函数(即QuoteName(table_name))来阻止sql注入。不了解Informix,但here是SqlServer的一个。