Wykład 12. Programowanie serwera MS SQL 2005 w C#



Podobne dokumenty
Wykład 10 Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Metody Metody, parametry, zwracanie wartości

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Wykład 5 Okna MDI i SDI, dziedziczenie

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi.

Programowanie w języku Java. Bazy danych SQLite w Javie

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Wykład :54 Języki... wykład 11

Wykład 4. Klasa List Kolejki Stosy Słowniki

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Db4o obiektowa baza danych wersja.net

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

LINQ TO SQL w dużym skrócie jest to zintegrowany język zapytao pozwalający na mapowanie relacyjnych baz danych na model obiektowy.

Aplikacje RMI Lab4

Programowanie obiektowe

Wywoływanie metod zdalnych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Aplikacje RMI

Podejście obiektowe do budowy systemów rozproszonych

Języki i metody programowania Java. Wykład 2 (część 2)

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Języki i metody programowania Java Lab2 podejście obiektowe

Klasy i obiekty cz II

Java. Programowanie Obiektowe Mateusz Cicheński

Remote Method Invocation 17 listopada 2010

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Walidacja danych w ASP.NET MVC

Aplikacja wielowątkowa prosty komunikator

Wykład 4: Klasy i Metody

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Gniazda BSD implementacja w C#

Kurs programowania. Wykład 9. Wojciech Macyna

Comarch e-sklep Sync. wersja

Tworzenie i wykorzystanie usług

Programowanie obiektowe

Programowanie obiektowe i zdarzeniowe

Wywoływanie metod zdalnych

Programowanie zespołowe

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Laboratorium 1 - Programowanie proceduralne i obiektowe

Git, Bitbucket, IntelliJ IDEA

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Wstęp. Ale po co? Implementacja

C# /.NET. Copyright by 3bird Projects 2018,

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Tworzenie i wykorzystanie usług sieciowych

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Instrukcja tworzenia aplikacji bazodanowej opartej o technologię Oracle i platformę.net

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Programowanie obiektowe

Projektowanie aplikacji internetowych laboratorium

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

akademia androida Składowanie danych część VI

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Programowanie obiektowe

Zaawansowane aplikacje WWW - laboratorium

Wstęp do ruby dla programistów javy

Dokumentacja do API Javy.

Podstawy programowania obiektowego

Programowanie obiektowe

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Polimorfizm. dr Jarosław Skaruz

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Szkoła Techniczno Ekonomiczna w Świdnicy. Języki i paradygmaty programowania - 8

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Programowanie obiektowe

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

5 AS SP.NET MVC. Walidacja danych. Zaawansowane programowanie internetowe Instrukcja nr 5

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Transkrypt:

Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych przez użytkownika w C# 1

Budowa procedur składowanych w C# Kod zarządzany, który ma rezydować na serwerze SQL jako np. procedura składowana czy funkcja pamiętana (również widok, wyzwalacz, nowy typ danych) jest statyczną metodą klasy. Taka metoda implementująca procedurę pamiętaną jest opatrzona atrybutem Microsoft.SqlServer.Server.SqlProcedure Umożliwia on utworzenie dla tej metody procedury wykonywalnej w CLR. Serwer SQL 2005 domyślnie nie pozwala na wykonywanie kodu CLR. Należy w tym celu zmienić jego konfigurację. Po połączeniu z serwerem jeśli posiadamy uprawnienia administratora wykonujemy polecenie: a następnie polecenie: sp_configure 'clr enable', 1 reconfigure 2

W środowisku Visual Studio możemy w celu zaprogramowania procedury pamiętanej tworzymy specjalny rodzaj projektu SQL Server Project (slajd 4). Następnie należy wskazać bazę danych na wybranym serwerze SQL (slajd 5). System tworzy szablon projektu, który uzupełniono przykładowo definicją procedury pamiętanej o nazwie TestProcedure z jednym parametrem wyjściowym outtytul. using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; public partial class StoredProcedures [Microsoft.SqlServer.Server.SqlProcedure] public static void TestProcedure(out SqlString outtytul) // Put your code here outtytul = "Procedura składowana"; ; 3

4

5

Przebudowa projektu utworzy plik dll, który po uruchomieniu w trybie debugowania zostanie umieszczony na serwerze w wybranej bazie danych. 6

7

Po dodaniu do nowego projektu funkcji definiowanej przez użytkownika (slajd 9) wybranie opcji User-Defined Function system wygeneruje pusty szablon definicji funkcji pamiętanej w C#. Po uzupełnieniu szablonu definicją funkcji pamiętanej (slajd 9) wystarczy przebudować projekt, aby utworzyć plik dll, a następnie wykonać go w trybie debugger'a, co spowoduje zarejestrowanie nowej funkcji w bazie danych (slajd 10). 8

9

using System; using System.Text; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; public partial class UserDefinedFunctions [Microsoft.SqlServer.Server.SqlFunction] public static SqlString Function1(SqlString a1, SqlString a2, SqlString t, SqlString rw) // Put your code here StringBuilder sb = new StringBuilder(); sb.appendformat("0, 1, 2, 3", a1, a2, t, rw); return new SqlString(sb.ToString()); ; 10

11

Przykład ilustruje wykorzystanie funkcji pamiętanej napisanej w C# w aplikacji klienckiej: using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.Common; using System.Data.SqlClient; namespace TestFunkcji class Program static void Main(string[] args) SqlConnectionStringBuilder connbldr = new SqlConnectionStringBuilder(); connbldr.datasource = "TEJOT"; connbldr.initialcatalog = "MS_biblioteka"; connbldr.integratedsecurity = true; connbldr.connecttimeout = 30; SqlConnection conn = new 12

SqlConnection(connBldr.ConnectionString); //conn.open(); SqlCommand polecenie = new SqlCommand(); polecenie.commandtext = "select dbo.function1(rtrim(autor_1), Rtrim(Autor_2), Rtrim(Tytul), Rok_wydania) from Ksiegozbior"; conn.open(); polecenie.connection = conn; SqlDataReader dr = polecenie.executereader(commandbehavior.closeconnection); bool następny = true; while (następny) while (dr.read()) Console.WriteLine(dr.GetString(0)); następny = dr.nextresult(); dr.close(); conn.close(); Console.ReadKey(); 13

14

Tworzenie typów definiowanych przez użytkownika w C# using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.Text; [Serializable] [Microsoft.SqlServer.Server.SqlUserDefinedType(Format.Native)] public struct Punkt3D : INullable private bool isnull; private int x, y, z; public override string ToString() if (IsNull) return "NULL"; else StringBuilder sb = new StringBuilder(); sb.appendformat("0, 1, 2", x, y, z); return sb.tostring(); 15

public bool IsNull get return isnull; public static Punkt3D Null get Punkt3D h = new Punkt3D(); h.isnull = true; return h; 16

[SqlMethod(OnNullCall = false)] public static Punkt3D Parse(SqlString s) Punkt3D u = new Punkt3D(); string rawvalue = s.value; try string[] vals = rawvalue.split(','); u.x = Int32.Parse(vals[0]); u.y = Int32.Parse(vals[1]); u.z = Int32.Parse(vals[2]); catch(exception e) throw new ArgumentException("Format niewłaściwy", e); return u; [SqlMethod(OnNullCall = false)] public Double OdległośćOdPunktu(Punkt3D origin) return Math.Sqrt(Math.Pow(x - origin.x, 2.0) + Math.Pow(y - origin.y, 2.0) + Math.Pow(z - origin.z, 2.0)); 17

public int X get return x; set x = value; public int Y get return y; set y = value; public int Z get return z; set z = value; I wykorzystanie tego UDT w bazie danych na serwerze. Utworzono w bazie MS_biblioteka nową tabelę Punkty 18

19

20