Data Set Sql Data Adapter Data Set Sql
- Slides: 10
Data. Set и Sql. Data. Adapter
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. 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"); 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 , со связанной базой данных 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"); Добавление таблиц в 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. 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. 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 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); } } }}
- Exlink
- Total set awareness set consideration set
- Training set validation set test set
- What is the overlap of data set 1 and data set 2?
- Kentico sap adapter
- Fujitsu air conditioner wifi adapter
- Moodle sis integration
- Nahnebensprechdämpfung
- Entwurfsmuster zustand beispiel
- Tests the basic functionality of computer ports.
- Which of these states about object adapter pattern?