Форум программистов » Программирование
C#.net обновление базы данных
(2 posts)-
подключение.... думаю тут все правильно...
scsb = new SqlConnectionStringBuilder(); scsb.DataSource = @".\SQLEXPRESS"; scsb.IntegratedSecurity = true; scsb.AttachDBFilename = @"C:\Documents and Settings\name\Мои документы\Visual Studio 2008\Projects\Link_base\Link_base\LinkBase.mdf"; connection = new SqlConnection(scsb.ConnectionString); connection.Open();конструктор класа
dataGridView1.DataSource = bindingSource1;заполнение таблицы dataGridView1 из БД с помощью DataTable
adapter = new SqlDataAdapter(cmd, connection); builder = new SqlCommandBuilder(adapter); table = new DataTable(); table.Locale = System.Globalization.CultureInfo.InvariantCulture; adapter.Fill(table); bindingSource1.DataSource = table;далее самое интересное.... не могу обновить БД (иногда!!!)
adapter.Update((DataTable)bindingSource1.DataSource); или я еще пробовал так adapter.Update(table);короче и так и так выпадает иногда!! ошибка... иногда после того как я второй раз хочу БД обновить... иногда после третьего раза...
ошибка вот
"Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information."
еще буду признателен если мне обьяснят что такое SqlCommandBuilder(adapter); и что он делает... в мсдн читал но не понял... -
вот ответ на мой вопрос....
[SRC c#]adapter.UpdateCommand = new SqlCommand("Update " + label1.Text + " set Link = @Link Where Link = @oldLink", connection);
SqlParameter parameter = new SqlParameter("@Link", SqlDbType.VarChar);
parameter.SourceColumn = "Link";
parameter.SourceVersion = DataRowVersion.Current;
adapter.UpdateCommand.Parameters.Add(parameter);SqlParameter parameter1 = new SqlParameter("@oldLink", SqlDbType.VarChar);
parameter1.SourceColumn = "Link";
parameter1.SourceVersion = DataRowVersion.Original;
adapter.UpdateCommand.Parameters.Add(parameter1);
[/SRC]
это только команда апдейт....
все остальные можно делать так....
[SRC c#]
adapter.InsertCommand = new SqlCommand("Insert into " + TableName + " (Link) Values (@Link)", connection);
adapter.InsertCommand.Parameters.Add("@Link", SqlDbType.VarChar, 0, "Link");
[/SRC]