1

SqlDataSource を使用してデータを取得するための準備済みステートメントを作成しようとしていますが、これを行うための適切な SelectCommand ステートメント (下の 7 行目) を作成できないようです。誰かがこれを行う方法に光を当てることができますか?

OracleCommand cm = new OracleCommand();
cm.CommandText = "SELECT FTPOSCODE FROM PPTBL WHERE DESC LIKE '%" + "@parm1" + "%";
cm.Parameters.Add("@parm1", "ACCOUNT");
OracleConnection cn = new OracleConnection();
cn.ConnectionString = ConfigurationManager.ConnectionStrings["ORCLConnectionString"].ConnectionString;
cn.Open();
SqlDataSource1.SelectCommand = cm.ToString();  // "ORA-00900: invalid SQL statement"
cn.Close();

以上を簡略化しました。Slawomir と私はチャットを続け、次の作業コードを思いつきました。ありがとうスラヴォミール!

using (OracleConnection cn = new OracleConnection(ConfigurationManager.ConnectionStrings["ORCLConnectionString"].ConnectionString)) {
    SqlDataSource1.SelectCommand = "SELECT FTPOSCODE, PTPOSCODE, POSCLASSTITLE, FKSA, JOBCAT, PAYGRADE, HRPAYRANGE, MONTHPAYRANGE FROM HR_PAY_PLAN WHERE UPPER(POSDESC) LIKE :1 OR UPPER(POSCLASSTITLE) LIKE :2 ORDER BY POSCLASSTITLE";
    SqlDataSource1.SelectParameters.Add(":1", "%" + key1 + "%");
    SqlDataSource1.SelectParameters.Add(":2", "%" + key1 + "%");
}
4

1 に答える 1

4

Oracle:parm1では、代わりに を使用する必要があり@parm1ます。さらに、パラメーター値にパーセント記号を追加する必要があります。また、SqlDataSource1 によって作成されるため、作成コマンドと接続は必要ありません。

SqlDataSource1.SelectCommand = "SELECT FTPOSCODE FROM PPTBL WHERE DESC LIKE :parm1";
SqlDataSource1.SelectParameters.Add(":parm1", "%ACCOUNT%");
于 2013-02-26T18:42:52.680 に答える