|
Частое создание параметров
|
|||
---|---|---|---|
#18+
Есть такой код, написанный до меня (вместо OracleParameter можно поставить SqlParameter, ибо используется две СУБД): OracleParameter param = new OracleParameter("paramName1", Convert.ToInt32(value1)); command.Parameters.Add(param); param = new OracleParameter("paramName2", Convert.ToInt32(value2)); command.Parameters.Add(param); param = new OracleParameter("paramName3", Convert.ToInt32(value3)); command.Parameters.Add(param); param = new OracleParameter("paramName4", Convert.ToInt32(value4)); command.Parameters.Add(param); Вопрос: если я уберу конструктор "new OracleParameter" и буду использовать для каждого параметра один объект, устанавливая его свойства (имя, тип данных, направление и т.д.), это действительно сэкономит память, или просто будет рефакторингом? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 10:25 |
|
Частое создание параметров
|
|||
---|---|---|---|
#18+
почитайте про referance\value types и как они предаются это не рефакторинг получится, а создание ошибки, которые отловите на рантайме ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 12:16 |
|
Частое создание параметров
|
|||
---|---|---|---|
#18+
Пока я написал вот так: command.Parameters.Add("paramName1", value1); Т.е. обошелся без создания объекта типа OracleParameter. А для выходного параметра так: command.Parameters.Add(String.Empty, OracleDbType.RefCursor, ParameterDirection.Output); И код этот работает. Смущало имя параметра выходного, которое вообще-то не надо указывать, а я указал String.Empty, но никакой ошибки не возникло. Но здесь сразу возникает вопрос: ведь метод Add объекта OracleParameterCollection возвращает объект типа OracleParameter, который дальше можно использовать для установки свойств, не предусмотренных кучей перегруженных методов Add. Не одна ли малина получается? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 12:24 |
|
Частое создание параметров
|
|||
---|---|---|---|
#18+
Т.е. что код param = new OracleParameter("paramName2", Convert.ToInt32(value2)); command.Parameters.Add(param); что код command.Parameters.Add("paramName2", Convert.ToInt32(valu2)); в плане расходования ресурсов машины работают одинаково. Я прав или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 12:29 |
|
Частое создание параметров
|
|||
---|---|---|---|
#18+
показания путаются то у вас автори буду использовать для каждого параметра один объект в другом посте авторcommand.Parameters.Add("paramName1", value1); почитайте Сеппу ADO.NET, станет немного яснее. Вызов перегруженного метода в конечном итоге приведет к одному и тому же результату, в внутреннюю колекцию параметров добавится новый элемент. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 13:22 |
|
Частое создание параметров
|
|||
---|---|---|---|
#18+
Винни-БухЕсть такой код, написанный до меня (вместо OracleParameter можно поставить SqlParameter, ибо используется две СУБД): OracleParameter param = new OracleParameter("paramName1", Convert.ToInt32(value1)); command.Parameters.Add(param); А Вы точно уверены, что это будет работать с MS SQL? Там System.Data.SqlClient нет метода Parameters.Add, который во втором параметре принимал бы значения. Если вам реально надо одинаково писать, то используйте Parametrs.AddWithValue("@paramName1", value1); http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.aspx http://msdn.microsoft.com/en-us/site/system.data.oracleclient.oracleparametercollection ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 18:44 |
|
|
start [/forum/topic.php?fid=17&fpage=42&tid=1350679]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 309ms |
total: | 431ms |
0 / 0 |