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


Автор: Akella 16.3.2008, 16:14
Не знаю, как бы правильно обозвать нужно было тему.

В общем код в дельфи выглядит так:
Код

DbGrid1.DataSource.Dataset.open;


Как открыть набор данных в C# (MSVC2008)

Может я немного наглею, но всё же хочу спросить. Может есть у кого примеры работы с БД в C# (MSVS + MS SQL), например примеры добавления, удалание, редактирования данных через запросы, хранимки.
Спасибо.

Автор: thomas 16.3.2008, 22:35
Akella, 
Приветствую.
Цитата

Как открыть набор данных в C# (MSVC2008)

Если честно, то не понял, что вы имеете в виду?
Что значит открыть?
Можно создать набор данных выполнив sql-запрос к базе данных, можно так же добавть,отредактировать или удалить запись в наборе данных.
Но вот ОТКРЫТЬ. 

А вообще можно пройти в http://forum.vingrad.ru/forum/dotnet-net-db-database.html форума и посмотреть подходящие темы.

Пример просили, пожалуйста.
Упражнение из школы. Коменты на русском присутствуют. Переменные правда поименованы на Фламандском.
Будут вопросы задавайте не стесняйтесь.

С наилучшими пожеланиями.

Автор: Akella 16.3.2008, 23:28
Цитата(thomas @  16.3.2008,  22:35 Найти цитируемый пост)
Если честно, то не понял, что вы имеете в виду?


Цитата(Akella @  16.3.2008,  16:14 Найти цитируемый пост)
В общем код в дельфи выглядит так:


Дельфи: На форме лежит грид, датасорс, датасет, датабэйс, всё это связано в цепочку. Как связано в цепочку.
Нажимаю кнопку и выполняется код:
DbGrid1.DataSource.Dataset.open;

Добавлено через 1 минуту и 37 секунд
Цитата(thomas @  16.3.2008,  22:35 Найти цитируемый пост)
Можно создать набор данных выполнив sql-запрос к базе данных, можно так же добавть,отредактировать или удалить запись в наборе данных.
Но вот ОТКРЫТЬ. 

ну не придирайся к словам. Вообще-то да. Именно открыть!!! Набор данных - таблица: DataSet.open; или я опять неправильно выражаюсь?

Автор: Akella 16.3.2008, 23:44
Спасибо, конечно за пример, но.... нет у меня этой базы: D:\vti\Margo\cyberpro.mdb

Добавлено через 2 минуты и 32 секунды
Цитата(thomas @  16.3.2008,  22:35 Найти цитируемый пост)
Можно создать набор данных выполнив sql-запрос к базе данных

В базе уже есть таблица, её мне нужно отобразить в гриде. Отобразить в гриде таблицу - это я называю ОТКРЫТЬ набор данных.

Добавлено через 7 минут и 20 секунд
Просто мне привычнее кинуть на форму несколько контролов, настроить соединение в дизайне, а потом по нажатию на кнопку выполнить что-то вроде: 
Код

dataGridView.Datasorce.Dataset.open;

Автор: Optimus 17.3.2008, 00:16
Цитата(Akella @  16.3.2008,  23:44 Найти цитируемый пост)
В базе уже есть таблица, её мне нужно отобразить в гриде


Пример для базы Eshop, но можете сделать для своей базы 
в ней есть таблица Monitors со столбцами: MonitorName, Description, Picture
На форме есть: Button: button1, и DataGridView: dataGridView1
Код

private void button1_Click(object sender, EventArgs e)
{
  string nameOfDataBase = "Eshop"; // имя базы

  string connectionString = "Data Source = .\\SQLEXPRESS; " +
    "Initial Catalog = " + nameOfDataBase + "; Integrated Security = true";
  SqlConnection connection = new SqlConnection(connectionString);

  SqlCommand command = new SqlCommand("Select [MonitorName], [Description], [Picture] From [Monitors]", connection);
  SqlDataAdapter adaptar = new SqlDataAdapter(command);
  DataSet dataSet = new DataSet();

  adaptar.Fill(dataSet, "Monitors");

  dataGridView1.DataSource = dataSet.Tables["Monitors"];
}

кликаем по button'у что бы отобразить DataGridView

Автор: Akella 17.3.2008, 00:30
Вроде с дизайном я разобрался, всё отображается.
Выполняю всего-лишь одну строку  smile 
Код

sqlDataAdapter1.Fill(db1DataSet, "Table_1"); 


Добавлено через 1 минуту и 36 секунд
В sqlDataAdapter1 сгенерированы все запросы. Что нужно делать, что-бы грид сам сохранял в базу введенные мню значения. Редактирую грид непосредственно в нём самом.

Автор: vponomarov 17.3.2008, 10:39
Цитата

В sqlDataAdapter1 сгенерированы все запросы. Что нужно делать, что-бы грид сам сохранял в базу введенные мню значения. Редактирую грид непосредственно в нём самом. 


в sqlDataAdapter1 нужно прописать insertCommand и updateCommand.
идея точно такая же как и при создании selectCommand, только вместо select че-то там... пишешь insert into... update...
и после окончания редактирования данных необходимо провести синхронизацию данных sqlDataAdapter1.Update()

Автор: Akella 17.3.2008, 11:46
Цитата(vponomarov @  17.3.2008,  10:39 Найти цитируемый пост)
в sqlDataAdapter1 нужно прописать insertCommand и updateCommand.

неужели я неясно написал, что это сделано?

Добавлено через 48 секунд
Цитата(Akella @  17.3.2008,  00:30 Найти цитируемый пост)
В sqlDataAdapter1 сгенерированы все запросы.

ну не запросы, а команды, так понятнее  smile ?

Автор: vponomarov 17.3.2008, 12:03
Цитата

неужели я неясно написал, что это сделано?

не вопрос! раз все сделано - вперд обновлять записи! smile 

Автор: Akella 17.3.2008, 12:23
запись в базу не сохраняется


Автор: vponomarov 17.3.2008, 12:26
Цитата

запись в базу не сохраняется

DataAdapter.Update("имя таблицы") делал?

Автор: Akella 17.3.2008, 23:43
Цитата(vponomarov @  17.3.2008,  12:26 Найти цитируемый пост)
DataAdapter.Update

это сохранение? или просто обновление таблицы?

Автор: vponomarov 18.3.2008, 10:15
Цитата

это сохранение? или просто обновление таблицы? 

это синхронизация данных.
т.е. новые записи будут вставлены в таблицу, измененные проапдейтятся, а удаленные будут удалены.

Автор: Akella 18.3.2008, 12:22
т.е. что-то вроде commit?

Автор: Voyager 18.3.2008, 16:05
Что-то вроде. DataAdapter.Update записывает изменения, которые сделаны в локальном наборе данных, в базу данных (как и написали - синхронизация).

Автор: Akella 18.3.2008, 16:25
Т.е. я спокойно могу удалять, добавлять, изменять, опять удалять, опять изменять, а потом сделать update? или после каждого изменения/добавления или удаление нуна делать update?

Автор: vponomarov 18.3.2008, 18:25
Цитата

Т.е. я спокойно могу удалять, добавлять, изменять, опять удалять, опять изменять, а потом сделать update? или после каждого изменения/добавления или удаление нуна делать update? 

нет, update нужно делать после завершения всех манипуляций с записями

Автор: Akella 18.3.2008, 21:31
Цитата(vponomarov @  17.3.2008,  12:26 Найти цитируемый пост)
DataAdapter.Update("имя таблицы") делал? 

Код

        private void button1_Click_1(object sender, EventArgs e)
        {
            sqlDataAdapter1.Update("Table_1");
        }


в итоге
Цитата

Error    1    The best overloaded method match for 'System.Data.Common.DbDataAdapter.Update(System.Data.DataRow[])' has some invalid arguments


Error    2    Argument '1': cannot convert from 'string' to 'System.Data.DataRow[]'


Добавлено через 4 минуты и 45 секунд
Вот такая связка:
sqlConnection1
sqlDataAdapter1
db1DataSet
db1DataSetBindingSource
dataGridView1

Автор: vponomarov 18.3.2008, 23:49
сорри, нужно передавать ДатаТэйбл а не имя таблицы в качестве аргумента методу апдэйт

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