Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将表名和选定字段作为参数传递_C#_Asp.net_Informix_Parameterized Query - Fatal编程技术网

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

C# 如何将表名和选定字段作为参数传递,c#,asp.net,informix,parameterized-query,C#,Asp.net,Informix,Parameterized Query,我得到以下错误: 错误:-201 消息:[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("@tablena

我得到以下错误:

错误:-201 消息:[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;
你不能

使用String.Replace代替

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

如果table_name和pdf_列以任何方式来自用户输入,则应使用QuoteName函数(即
QuoteName(table_name)
)来防止sql注入。不知道Informix,但它是SqlServer的一种。

为什么不使用类似于
“选择”+pdf\u column+”的“+table\u name”
?它适用于任何数据库。sql语句在发送到数据库之前包含列和表您只能对值使用占位符,而不能对查询的结构元素(如表名或列名)使用占位符。