2017-01-23 103 views
0
string sqlCmd = @"SELECT r.row_id AS resp_id, 
         r.name AS resp_name 
        FROM srb.s_resp r, 
         srb.s_per_resp pr, 
         srb.s_contact c, 
         srb.s_user u 
        WHERE r.row_id = pr.resp_id 
        AND u.row_id = c.row_id 
        AND c.person_uid = pr.per_id 
        AND UPPER(u.login) = @login 
       ORDER BY r.name"; 

OracleConnection con = new OracleConnection(getConnectionString(username, password)); 
OracleCommand command = con.CreateCommand(); 

conSiebel.Open(); 
command.CommandType = CommandType.Text; 
command.Connection = con; 
command.CommandText = sqlCmd; 

command.Parameters.Add(new OracleParameter("login", username)); 

IDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); 
reader.Close(); 

我想將@login參數添加到上面的查詢,但它沒有添加任何人都可以幫我解決這個問題嗎?在c#中的Oracle參數化查詢

+0

我看到的第一件事情是,新的登錄參數永遠不會被分配'ParameterDirection'。 – CDove

+0

[踢壞的習慣:使用舊式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - 在ANSI - ** 92 ** SQL標準(** 25年**之前)中將舊式*逗號分隔的表*樣式列表替換爲* proper * ANSI'JOIN'語法不鼓勵使用 –

回答

2

改用冒號(:login)。

string sqlCmd = @"SELECT r.row_id AS resp_id, 
            r.name AS resp_name 
          FROM srb.s_resp r, 
            srb.s_per_resp pr, 
            srb.s_contact c, 
            srb.s_user u 
          WHERE r.row_id = pr.resp_id 
            AND u.row_id = c.row_id 
            AND c.person_uid = pr.per_id 
            AND UPPER(u.login) = :login 
            ORDER BY r.name"; 
+0

謝謝你對我有用。 –

+0

很高興聽到它。如果這是修復,請不要忘記接受答案。 – chadnt