параметризованный оракул-запрос с корпоративной библиотекой - PullRequest
0 голосов
/ 02 мая 2011

Мой файл .cs содержит этот код

DbCommand dbc = 
    db.GetStoredProcCommand(
        string.Format(ConfigurationSettings.AppSettings["INSERT_TBLREPORTTYPE"]
                , rtype, zoneid, name));

и мой запрос в web.cofig:

<add key="INSERT_TBLREPORTTYPE" 
    value="INSERT INTO TBLREPORT(ID,TYPE,RELATIONID,ISACTIVE,NAME)    
            VALUES(SEQ_REPORT.NEXTVAL,{0},{1},0,{2}) "/>

Как добавить параметр, чтобы я мог предотвратить внедрение sql на мой сайт?

Я пытался

db.AddInParameter(dbc, "NAME", DbType.String, name);
db.AddInParameter(dbc, "RELATIONID", DbType.Int32, zoneid);
db.AddInParameter(dbc, "TYPE", DbType.String, rtype);

, а также

dbc.Parameters[0].DbType = DbType.String;
dbc.Parameters[0].Value = name;
dbc.Parameters[1].DbType = DbType.Int32;
dbc.Parameters[1].Value = zoneid;
dbc.Parameters[2].DbType = DbType.String;
dbc.Parameters[2].Value = rtype;

Никто из них не работает. Может ли кто-нибудь дать мне предложения относительно этого ????

1 Ответ

2 голосов
/ 03 мая 2011

Префикс параметра для Oracle: :. Поэтому вы должны изменить свой SQL на:

<add key="INSERT_TBLREPORTTYPE" 
    value="INSERT INTO TBLREPORT(ID, TYPE, RELATIONID, ISACTIVE, NAME)    
           VALUES(SEQ_REPORT.NEXTVAL, :TYPE, :RELATIONID, 0, :NAME) "/>

Затем вы можете добавить параметры, используя:

db.AddInParameter(dbc, ":NAME", DbType.String, name);
...