1

次のエラーが表示されます。

ERROR:-201 メッセージ: [Informix .NET プロバイダ][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;
4

1 に答える 1

3

できません。

代わりに String.Replace を使用してください。

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

QuoteName(table_name)いずれにせよ、table_name と pdf_column がユーザー入力に由来する場合は、SQL インジェクションを防ぐために QuoteName 関数 (つまり ) を使用する必要があります。Informix については知りませんが、ここに SqlServer 用のものがあります。

于 2013-02-07T10:01:29.527 に答える