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


Автор: 6axyc 18.11.2009, 21:02
всем драсте
у меня есть проблема, у меня есть база данных которая привязана к датагриду, и при добавлении строки в БД датагрид не обновляется, помогите плиз, как обновить данные?

 

Автор: mrbrooks 19.11.2009, 08:35
Показывай как добавляешь и как обновляешь

Автор: 6axyc 19.11.2009, 20:46
В общем код таков, в форм лоад ( this.table1TableAdapter.Fill(this.clientDataSet.Table1);) добавилось автоматом
Все строки кода обозначенные "//" это то как я пробовал обновить датагрид.
хелп плиз, сама база данных обновляется а вот датагрид не  показывает добавленные данные пока не перезапущу форму.

Код

private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'clientDataSet.Table1' table. You can move, or remove it, as needed.
            this.table1TableAdapter.Fill(this.clientDataSet.Table1);
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\Documents and Settings\\кот\\Мои документы\\Visual Studio 2008\\Projects\\sqlite\\sqlite\\client.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
            SqlCommand cmd = new SqlCommand("insert into table1(name) values ('ghg')",cn);
            cn.Open();
            cmd.ExecuteNonQuery();
            
            //table1BindingSource.EndEdit();
            //tableAdapterManager.UpdateAll(clientDataSet);
            
            //table1TableAdapter.Update(this.clientDataSet.Table1);
            //this.table1TableAdapter.Fill(this.clientDataSet.Table1);
            
            //clientDataSet.AcceptChanges();
            
            //dataGridView1.Invalidate(true);
            //dataGridView1.Update();
        }

Автор: mrbrooks 20.11.2009, 09:01
как то слишком заумно имхо.

если уж вставляешь sql-запросом почему бы не сделать множественный запрос, т.е:

Код

        private void button1_Click(object sender, EventArgs e)
        {
           using ( SqlConnection cn = new SqlConnection("..."))
          {
                    cn.Open();
                    string query = "insert into table1(name) values ('ghg');";
                    string query += "select * from table1;";
                    SqlDataAdapter da = new SqlDataAdapte(query,cn);
                    DataSet ds = new DataSet();
                    da.Fill(ds,"table1");
                    dataGridView1.DataSource = ds;
                    dataGridView1.DataMember = "table1";
          }
        }


как то так. писал здесь поэтому могут быть и косяки.

зы. и на будущее - любое изменение БД лучше реализовывать на основе встроенных процедур самого сервера.

Автор: 6axyc 20.11.2009, 14:00
mrbrooks, огромное тебе спасибоб ты мне очень сильно помог, я долго пытался найти ченить в гугле и все никак, посиба огромное!!!
тока у меня есть вопрос по твоему предыдущему ответу, что за "встроенные процедуры сервера"?

Автор: mrbrooks 20.11.2009, 14:22
Цитата(6axyc @  20.11.2009,  14:00 Найти цитируемый пост)
тока у меня есть вопрос по твоему предыдущему ответу, что за "встроенные процедуры сервера"? 

по умному это зовется хранимая процедура. в трех словах - это обыкновенная функция (метод) который описывается в самой БД и затем вызывается внешним приложением по ее имени. Собственно она может принимать параметры и возвращать их. Подробнее о хранимых процедурах http://ru.wikipedia.org/wiki/%D0%A5%D1%80%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D0%B0

Для ms sql server http://msdn.microsoft.com/en-us/library/aa258259%28SQL.80%29.aspx

ну и собственно если погуглишь найдешь массу примеров.

Автор: 6axyc 20.11.2009, 14:43
Огромное спасибо!

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