Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Связывание и отображение данных в DataGridView


Автор: iogun 9.11.2008, 13:44
На форме имеется DataGridView. Хочу программно создать подключение к базе, к таблице и отобразить таблицу в этом компоненте. Запрос будет с параметром.
Код

 connStr = Properties.Settings.Default.controlordersConnectionString;
            conn = new SqlConnection(connStr);
            dsExecutors = new DataSet();
            conn.Open();
            string sqlSelectExecutors = "select * from executors where [order]=@order";
            dAdapterExecutors = new SqlDataAdapter(sqlSelectExecutors, conn);
            dAdapterExecutors.SelectCommand.CommandText = sqlSelectExecutors;
            dataGridView1.AutoGenerateColumns = true;

            SqlParameter[] spOrder = new SqlParameter[1];
            spOrder[0] = new SqlParameter("@order", System.Data.SqlDbType.NVarChar);
            spOrder[0].Value = this.order;
            spOrder[0].Direction = ParameterDirection.Input;
            dAdapterExecutors.SelectCommand.Parameters.Add(spOrder[0]);
            dataGridView1.DataSource = dsExecutors;
            dAdapterExecutors.Fill(dsExecutors, "ctrlo_executors");


выдается такая ошибка

"Prepared statement '(@order nvarchar(4000))select * from ctrlo_executors where [orde' expects parameter @order, which was not supplied."
а если использовать запрос без параметра то dataGridView остается пустым.

Автор: iogun 9.11.2008, 14:05
Переписал код след. образом
Код

            string sqlSelectExecutors = "select * from ctrlo_executors";
            dAdapterExecutors = new SqlDataAdapter(sqlSelectExecutors, conn);
            dsExecutors = new DataSet();
 

            SqlParameter[] spOrder = new SqlParameter[1];
            spOrder[0] = new SqlParameter("@order", System.Data.SqlDbType.NVarChar);
            spOrder[0].Value = this.order;
            spOrder[0].Direction = ParameterDirection.Input;
            //dAdapterExecutors.SelectCommand.Parameters.Add(spOrder[0]);

            dAdapterExecutors.Fill(dsExecutors, "ctrlo_executors");
            dataGridView1.DataSource = dsExecutors.Tables["ctrlo_executors"].DefaultView;


если использую простой запрос select * from ctrlo_executors без параметра, то все нормально, грид заполняется.
если select * from ctrlo_executors where [order]=@order, и разремю строку dAdapterExecutors.SelectCommand.Parameters.Add(spOrder[0]);
то на строке 

Код

 dAdapterExecutors.Fill(dsExecutors, "ctrlo_executors");

вываливается ошибка 
Цитата

Prepared statement '(@order nvarchar(4000))select * from ctrlo_executors where [orde' expects parameter @order, which was not supplied.

Автор: mr.DUDA 9.11.2008, 19:53
А если без собачки?

Автор: elbjarn 9.11.2008, 23:43
зачем вам использовать массив скл-параметров из 1 элемента?
используйте метод sqlcommand.parameters.addwithvalue

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)