заранее содать масив входных параметров в хранимку
От: NanoSword  
Дата: 17.07.08 09:24
Оценка:
использую BLToolkit
для метода SetSpCommand мне надо заранее содать масив входных параметров в хранимку

так всё работает
using (DbManager db = new DbManager())
{
db.SetSpCommand("Account_update",
db.NullParameter("@Account_id", 2),
db.NullParameter("@Account_Name", "IVAN"),)
.ExecuteNonQuery();
)

а так НЕ работает
using (DbManager db = new DbManager())
{
object[] p = new object[2];
p[0] = db.NullParameter("@Account_id", 2),
p[1] = db.NullParameter("@Account_Name", "IVAN"),)

db.SetSpCommand("Account_update",p).ExecuteNonQuery();
)

//profiler показавет следущее
exec Account_update @Account_id=default, @Account_Name=default

КАК ПРАВИЛЬНО СОЗДАТЬ МАССИВ ВХОДНЫХ ПАРАМЕТРОВ?????
Re: заранее содать масив входных параметров в хранимку
От: IT Россия linq2db.com
Дата: 17.07.08 13:19
Оценка:
Здравствуйте, NanoSword, Вы писали:

NS>а так НЕ работает

NS>using (DbManager db = new DbManager())
NS>{
NS> object[] p = new object[2];
NS> p[0] = db.NullParameter("@Account_id", 2),
NS> p[1] = db.NullParameter("@Account_Name", "IVAN"),)

NS> db.SetSpCommand("Account_update",p).ExecuteNonQuery();

NS>)

Попробуй не object[], а IDbDataParameter[].
... << RSDN@Home 1.2.0 alpha rev. 771>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: заранее содать масив входных параметров в хранимку
От: NanoSword  
Дата: 17.07.08 13:33
Оценка:
Здравствуйте, IT, Вы писали:

IT>Попробуй не object[], а IDbDataParameter[].


IDbDataParameter пробовал — тоже самое получается
Re: заранее содать масив входных параметров в хранимку
От: IT Россия linq2db.com
Дата: 17.07.08 14:04
Оценка:
Здравствуйте, NanoSword, Вы писали:

NS>КАК ПРАВИЛЬНО СОЗДАТЬ МАССИВ ВХОДНЫХ ПАРАМЕТРОВ?????


Проверил на тестовой базе вот такой пример:

using System;
using System.Data;

using BLToolkit.Data;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (DbManager db = new DbManager())
            {
                var p = new object[]
                {
                    db.NullParameter("@firstName", "Tester"),
                    db.NullParameter("@lastName",  "Testerson")
                };

                DataSet ds = db.SetSpCommand("Person_SelectByName", p).ExecuteDataSet();

                var p0 = ds.Tables[0].Rows[0][0];
                var p1 = ds.Tables[0].Rows[0][1];
            }
        }
    }
}

Всё работает. Может у тебя дело в чём-то другом (твой второй пример не компилируется)?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: заранее содать масив входных параметров в хранимку
От: Аноним  
Дата: 17.07.08 17:10
Оценка:
Здравствуйте, IT, Вы писали:


IT> var p = new object[]

IT> {
IT> db.NullParameter("@firstName", "Tester"),
IT> db.NullParameter("@lastName", "Testerson")
IT> };
так у меня тоже работает, НО p я создаю не за за одну операцию, а вот в цикле:
object[] p = new object[2];
p[0] = db.NullParameter("@Account_id", 2),
p[1] = db.NullParameter("@Account_Name", "IVAN"),)
.......
попробуй посмотреть такой вариант и будет ощибка! пожалуйста!!!!!
у меня заранее число элементов в масиве заранее неизвестно, потому что интерфей генерируется динамически
как быть если p надо создавать так object[] p = new object[n];
а потом в цикле заполнять — неработает?(((
заранее, спасибо
Re[3]: заранее содать масив входных параметров в хранимку
От: IT Россия linq2db.com
Дата: 17.07.08 18:15
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>так у меня тоже работает, НО p я создаю не за за одну операцию, а вот в цикле:


Для циклов у нас есть

1. ExecuteForEach — http://www.bltoolkit.net/Doc/Data/ExecuteForEach.htm
2. Prepare + AssignParameterValues — http://www.bltoolkit.net/Doc/Data/Prepare.htm
... << RSDN@Home 1.2.0 alpha rev. 771>>
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.