0

aspx フォームと複数行のテキスト ボックスがあります。テキストボックスの値を Oracle テーブルに送信していますが、Oracle はアポストロフィとセミコロンを好みません。文字列からアポストロフィとセミコロンを除外する方法を教えてください。私はこのようにしています。

     using (OracleConnection connection = new OracleConnection())
                {
                    connection.ConnectionString = connectionString;
                    connection.Open();

                    OracleCommand command = connection.CreateCommand();

                    command.CommandType = System.Data.CommandType.StoredProcedure;

                    // Name of procedure or function to be executed
                    command.CommandText = "PROC_SENDREQUISITION";

                    command.Parameters.Add(new OracleParameter("P_ReqID", OracleType.VarChar)).Value = preqID;
                    command.Parameters.Add(new OracleParameter("P_reqDate", OracleType.VarChar)).Value = preqDate;
                    command.Parameters.Add(new OracleParameter("P_requester", OracleType.VarChar)).Value = prequester;
command.Parameters.Add(new OracleParameter("P_remarks", OracleType.VarChar)).Value = premarks;


                    command.ExecuteNonQuery();
                }
4

2 に答える 2

1

クエリでパラメーターを使用します。

現在、おそらく文字列を連結しているため、Sql Injectionが発生しています。

MSDNの例:

string queryString = "SELECT * FROM Table1 WHERE Field1 LIKE ?";
OleDbCommand command = new OleDbCommand(queryString, connection);
command.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a";
OleDbDataReader reader = command.ExecuteReader();
于 2012-12-19T09:25:15.063 に答える
0

string.replace(";", "") でうまくいくはずですが、SQL インジェクションの問題があるようです。そのため、セミコロンやアポストロフィを削除する代わりに、SQL インジェクションについて調べて対処することをお勧めします。

于 2012-12-19T09:27:28.453 に答える