Data Set Sql Data Adapter Data Set Sql

  • Slides: 10
Download presentation
Data. Set и Sql. Data. Adapter

Data. Set и Sql. Data. Adapter

Data. Set представляет хранилище данных, с которыми можно работать независимо от наличия подключения. Sql.

Data. Set представляет хранилище данных, с которыми можно работать независимо от наличия подключения. Sql. Data. Adapter заполняет Data. Set данными из БД. Для получения данных через объект Sql. Data. Adapter необходимо организовать подключение к БД и выполнить команду SELECT. Есть несколько способов создания Sql. Data. Adapter: Sql. Data. Adapter adapter = new Sql. Data. Adapter(); Sql. Data. Adapter adapter = new Sql. Data. Adapter(command); Sql. Data. Adapter adapter = new Sql. Data. Adapter(sql, connection. String); public Form 1() { Initialize. Component(); string connection. String = @"Data Source=. SQLEXPRESS; Initial Catalog=usersdb; Integrated Security=True"; string sql = "SELECT * FROM Users"; using (Sql. Connection connection = new Sql. Connection(connection. String)) { connection. Open(); // Создаем объект Data. Adapter Sql. Data. Adapter adapter = new Sql. Data. Adapter(sql, connection); // Создаем объект Dataset Data. Set ds = new Data. Set(); // Заполняем Dataset adapter. Fill(ds); // Отображаем данные data. Grid. View 1. Data. Source = ds. Tables[0]; } }

Способ работы с Data. Set на основе заполнения из существующего реляционного источника данных с

Способ работы с Data. Set на основе заполнения из существующего реляционного источника данных с помощью Data. Adapter. q Объект Data. Set содержит таблицы, которые представлены типом Data. Table. q Таблица, в свою очередь, состоит из столбцов и строк. Каждый столбец представляет объект Data. Column, а строка - объект Data. Row. q Все данные строки хранятся в свойстве Item. Array, который представляет массив объектов - значений отдельных ячеек строки. static void Main(string[] args) { string sql = "SELECT * FROM Users"; string connection. String = @"Data Source=. SQLEXPRESS; Initial Catalog=usersdb; Integrated Security=True"; using (Sql. Connection connection = new Sql. Connection(connection. String)) { connection. Open(); Sql. Data. Adapter adapter = new Sql. Data. Adapter(sql, connection); Data. Set ds = new Data. Set(); adapter. Fill(ds); // перебор всех таблиц foreach (Data. Table dt in ds. Tables) { Console. Write. Line(dt. Table. Name); // название таблицы // перебор всех столбцов foreach(Data. Column column in dt. Columns) Console. Write("t{0}", column. Column. Name); Console. Write. Line(); // перебор всех строк таблицы foreach (Data. Row row in dt. Rows) { // получаем все ячейки строки var cells = row. Item. Array; foreach (object cell in cells) Console. Write("t{0}", cell); Console. Write. Line(); } } }

static void Main(string[] args) { Data. Set book. Store = new Data. Set("Book. Store");

static void Main(string[] args) { Data. Set book. Store = new Data. Set("Book. Store"); Data. Table books. Table = new Data. Table("Books"); // добавляем таблицу в dataset book. Store. Tables. Add(books. Table); // создаем столбцы для таблицы Books Data. Column id. Column = new Data. Column("Id", Type. Get. Type("System. Int 32")); id. Column. Unique = true; // столбец будет иметь уникальное значение id. Column. Allow. DBNull = false; // не может принимать null id. Column. Auto. Increment = true; // будет автоинкрементироваться id. Column. Auto. Increment. Seed = 1; // начальное значение id. Column. Auto. Increment. Step = 1; // приращении при добавлении новой строки Способ работы с Data. Set на основе программного создания Data. Table, Data. Relation внутри Data. Set. Data. Row row = books. Table. New. Row(); row. Item. Array = new object[] { null, "Война и мир", 200 }; books. Table. Rows. Add(row); // добавляем первую строку books. Table. Rows. Add(new object[] { null, "Отцы и дети", 170 }); // добавляем вторую строку Data. Column name. Column = new Data. Column("Name", Type. Get. Type("System. String")); Data. Column price. Column = new Data. Column("Price", Type. Get. Type("System. Decimal")); price. Column. Default. Value = 100; // значение по умолчанию Data. Column discount. Column = new Data. Column("Discount", Type. Get. Type("System. Decimal")); discount. Column. Expression = "Price * 0. 2"; books. Table. Columns. Add(id. Column); books. Table. Columns. Add(name. Column); books. Table. Columns. Add(price. Column); books. Table. Columns. Add(discount. Column); // определяем первичный ключ таблицы books. Table. Primary. Key = new Data. Column[] { books. Table. Columns["Id"] }; добавление строки books. Table. Rows. Add(new object[] {null, "Отцы и дети", 170 }); получение строки Data. Row row = books. Table. Rows[0]; // первая строка Console. Write("t. Ид t. Название t. Цена t. Скидка" ); Console. Write. Line(); foreach (Data. Row r in books. Table. Rows) { foreach (var cell in r. Item. Array) Console. Write("t{0}", cell); Console. Write. Line(); } Console. Read(); } изменение значения ячейки books. Table. Rows[0][2] = 300; //третьей ячейке первой строки присваивается значение 300 удаление строки books. Table. Rows. Remove. At(1); // удаление второй строки по индексу // другой сопосб удаления Data. Row row = books. Table. Rows[0]; books. Table. Rows. Remove(row);

Обновление БД из Data. Set. Объект SQLCommand. Builderstatic SQLCommand. Builder автоматически создает однотабличные команды,

Обновление БД из Data. Set. Объект SQLCommand. Builderstatic SQLCommand. Builder автоматически создает однотабличные команды, используемые для согласования изменений, внесенных в Data. Set , со связанной базой данных SQL Server. CREATE PROCEDURE [dbo]. [sp_Create. User] @id int, @name nvarchar(50), @age int AS INSERT INTO Users (Id, Name, Age) VALUES (@id, @name, @age) GO string connection. String = @"Data Source=. SQLEXPRESS; Initial Security=True"; static void Main(string[] args) { string sql = "SELECT * FROM Users"; using (Sql. Connection connection = new Sql. Connection(connection. String)) { connection. Open(); Sql. Data. Adapter adapter = new Sql. Data. Adapter(sql, connection); Sql. Command. Builder command. Builder = new Sql. Command. Builder(adapter); Catalog=usersdb; Integrated // устанавливаем команду на вставку adapter. Insert. Command = new Sql. Command("sp_Create. User", connection); // это будет зранимая процедура adapter. Insert. Command. Type = Command. Type. Stored. Procedure; // добавляем параметр для name adapter. Insert. Command. Parameters. Add( new Sql. Parameter("@name", Sql. Db. Type. NVar. Char, 50, "Name")); // добавляем параметр для age adapter. Insert. Command. Parameters. Add( new Sql. Parameter("@age", Sql. Db. Type. Int, 0, "Age")); // добавляем выходной параметр для id Sql. Parameter parameter = adapter. Insert. Command. Parameters. Add( "@Id", Sql. Db. Type. Int, 0, "Id"); parameter. Direction = Parameter. Direction. Output; Data. Set ds = new Data. Set(); adapter. Fill(ds); Data. Table dt = ds. Tables[0]; // добавим новую строку Data. Row new. Row = dt. New. Row(); new. Row["Name"] = "Kris"; new. Row["Age"] = 26; dt. Rows. Add(new. Row); adapter. Update(ds); ds. Accept. Changes(); } } }

static void Main(string[] args) { Data. Set ds = new Data. Set("Store"); Добавление таблиц

static void Main(string[] args) { Data. Set ds = new Data. Set("Store"); Добавление таблиц в Data. Set // таблица компаний Data. Table companies. Table = new Data. Table("Companies"); // два столбца таблицы Companies Data. Column comp. Id. Column = new Data. Column("Id", Type. Get. Type("System. Int 32")); comp. Id. Column. Unique = true; comp. Id. Column. Allow. DBNull = false; comp. Id. Column. Auto. Increment = true; comp. Id. Column. Auto. Increment. Seed = 1; comp. Id. Column. Auto. Increment. Step = 1; Data. Column comp. Name. Column = new Data. Column("Name", Type. Get. Type("System. String")); // вторая таблица - смартфонов компаний // добавляем столбцы Data. Table phones. Table = new Data. Table("Phones"); companies. Table. Columns. Add(comp. Id. Column); Data. Column phone. Id. Column = new Data. Column("Id", Type. Get. Type("System. Int 32")); companies. Table. Columns. Add(comp. Name. Column); phone. Id. Column. Unique = true; phone. Id. Column. Allow. DBNull = false; // добавляем таблицу в dataset phone. Id. Column. Auto. Increment = true; ds. Tables. Add(companies. Table); phone. Id. Column. Auto. Increment. Seed = 1; phone. Id. Column. Auto. Increment. Step = 1; Data. Column phone. Name. Column = new Data. Column("Name", Type. Get. Type("System. String")); Data. Column phone. Price. Column = new Data. Column("Price", Type. Get. Type("System. Decimal")); // столбец-внешний ключ Data. Column phone. Company. Column = new Data. Column("Company. Id", Type. Get. Type("System. Int 32")); // добавляем столбцы в таблицу смартфонов phones. Table. Columns. Add(phone. Id. Column); phones. Table. Columns. Add(phone. Name. Column); phones. Table. Columns. Add(phone. Price. Column); phones. Table. Columns. Add(phone. Company. Column); // добавляем таблицу смартфонов ds. Tables. Add(phones. Table);

Добавление связей между таблицами // установка отношений между таблицами ds. Relations. Add("Phones. Companies", companies.

Добавление связей между таблицами // установка отношений между таблицами ds. Relations. Add("Phones. Companies", companies. Table. Columns["Id"], phones. Table. Columns["Company. Id"]); // имя, главный столбец, подчиненный столбец // Добавим ряд данных Data. Row apple = companies. Table. New. Row(); apple. Item. Array = new object[] { null, "Apple" }; companies. Table. Rows. Add(apple); Data. Row samsung = companies. Table. New. Row(); samsung. Item. Array = new object[] { null, "Samsung" }; companies. Table. Rows. Add(samsung); Data. Row iphone 5 = phones. Table. New. Row(); iphone 5. Item. Array = new object[] { null, "i. Phone 5", 400, apple["Id"] }; phones. Table. Rows. Add(iphone 5); Data. Row iphone 6 s = phones. Table. New. Row(); iphone 6 s. Item. Array = new object[] { null, "i. Phone 6 S", 600, apple["Id"] }; phones. Table. Rows. Add(iphone 6 s); Data. Row galaxy 6 = phones. Table. New. Row(); galaxy 6. Item. Array = new object[] { null, "Samsung Galaxy S 6", 500, samsung["Id"] }; phones. Table. Rows. Add(galaxy 6); Data. Row galaxyace 2 = phones. Table. New. Row(); galaxyace 2. Item. Array = new object[] { null, "Samsung Galaxy Ace 2", 200, samsung["Id"] }; phones. Table. Rows. Add(galaxyace 2); // выведем все смартфоны компании Apple Data. Row[] rows = apple. Get. Child. Rows(ds. Relations["Phones. Companies"]); Console. Write. Line("Продукция компании Apple"); Console. Write. Line("Id t. Смартфон t. Цена"); foreach (Data. Row r in rows) { Console. Write. Line("{0} t{1} t{2}", r["Id"], r["Name"], r["Price"]); } Console. Read(); }

Обновление базы данных из визуального приложения using System; System. Data; System. Windows. Forms; System.

Обновление базы данных из визуального приложения using System; System. Data; System. Windows. Forms; System. Data. Sql. Client; namespace Ado. Net. Win. Forms. App { public partial class Form 1 : Form { Data. Set ds; Sql. Data. Adapter adapter; Sql. Command. Builder command. Builder; string connection. String = @"Data Source=. SQLEXPRESS; Initial Catalog=usersdb; Integrated Security=True" ; string sql = "SELECT * FROM Users"; public Form 1() { Initialize. Component(); data. Grid. View 1. Selection. Mode = Data. Grid. View. Selection. Mode. Full. Row. Select; data. Grid. View 1. Allow. User. To. Add. Rows = false; using (Sql. Connection connection = new Sql. Connection(connection. String)) { connection. Open(); adapter = new Sql. Data. Adapter(sql, connection); ds = new Data. Set(); adapter. Fill(ds); data. Grid. View 1. Data. Source = ds. Tables[0]; } }

// кнопка добавления private void add. Button_Click(object sender, Event. Args e) { Data. Row

// кнопка добавления private void add. Button_Click(object sender, Event. Args e) { Data. Row row = ds. Tables[0]. New. Row(); // добавляем новую строку в Data. Table ds. Tables[0]. Rows. Add(row); } // кнопка удаления private void delete. Button_Click(object sender, Event. Args e) { // удаляем выделенные строки из data. Grid. View 1 foreach(Data. Grid. View. Row row in data. Grid. View 1. Selected. Rows) CREATE PROCEDURE [dbo]. [sp_Create. User] { @id int, data. Grid. View 1. Rows. Remove(row); @name nvarchar(50), } @age int } AS // кнопка сохранения INSERT INTO Users (Id, Name, Age) private void save. Button_Click(object sender, Event. Args e) { VALUES (@id, @name, @age) using (Sql. Connection connection = new Sql. Connection(connection. String)) GO { connection. Open(); adapter = new Sql. Data. Adapter(sql, connection); command. Builder = new Sql. Command. Builder(adapter); adapter. Insert. Command = new Sql. Command("sp_Create. User", connection); adapter. Insert. Command. Type = Command. Type. Stored. Procedure; adapter. Insert. Command. Parameters. Add(new Sql. Parameter("@id", Sql. Db. Type. Int, 0, "Id")); adapter. Insert. Command. Parameters. Add(new Sql. Parameter("@name", Sql. Db. Type. NVar. Char, 50, "Name")); adapter. Insert. Command. Parameters. Add(new Sql. Parameter("@age", Sql. Db. Type. Int, 0, "Age")); adapter. Update(ds); } } }}