Udostępnij przez


Krok 3. Weryfikacja koncepcji nawiązywania połączenia z bazą danych SQL przy użyciu języka Ruby

Ten przykład powinien być traktowany tylko jako dowód koncepcji. Przykładowy kod jest uproszczony w celu zapewnienia przejrzystości i niekoniecznie reprezentuje najlepsze rozwiązania zalecane przez firmę Microsoft.

Krok 1. Łączenie

Funkcja TinyTDS::Client służy do nawiązywania połączenia z usługą SQL Database.

    require 'tiny_tds'  
    client = TinyTds::Client.new username: 'yourusername@yourserver', password: 'yourpassword',  
    host: 'yourserver.database.windows.net', port: 1433,  
    database: 'AdventureWorks', azure:true  

Krok 2. Wykonywanie zapytania

Skopiuj i wklej następujący kod w pustym pliku. Nazwij go test.rb. Następnie wykonaj je, wprowadzając następujące polecenie w wierszu polecenia:

    ruby test.rb  

W przykładzie kodu funkcja TinyTds::Result służy do pobierania zestawu wyników z zapytania względem usługi SQL Database. Ta funkcja akceptuje zapytanie i zwraca zestaw wyników. Zestaw wyników jest iterowany przy użyciu parametru result.each do |row|.

    require 'tiny_tds'    
    print 'test'       
    client = TinyTds::Client.new username: 'yourusername@yourserver', password: 'yourpassword',  
    host: 'yourserver.database.windows.net', port: 1433,  
    database: 'AdventureWorks', azure:true  
    results = client.execute("SELECT c.CustomerID, c.CompanyName,COUNT(soh.SalesOrderID) AS OrderCount FROM SalesLT.Customer AS c LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID GROUP BY c.CustomerID, c.CompanyName ORDER BY OrderCount DESC")  
    results.each do |row|  
    puts row  
    end  

Krok 3. Wstaw wiersz

W tym przykładzie zobaczysz, jak bezpiecznie wykonać instrukcję INSERT , przekazać parametry, które chronią aplikację przed wartością iniekcji SQL .

Aby korzystać z usługi TinyTDS z platformą Azure, zaleca się wykonanie kilku SET instrukcji w celu zmiany sposobu obsługi określonych informacji w bieżącej sesji. Zalecane SET deklaracje są podane w przykładowym kodzie. Na przykład SET ANSI_NULL_DFLT_ON umożliwi tworzenie nowych kolumn, aby dopuszczać wartości null, nawet jeśli dopuszczalność wartości null w kolumnie nie jest jawnie określona.

Aby dopasować format daty/godziny programu Microsoft SQL Server, użyj funkcji strftime do rzutowania do odpowiedniego formatu daty/godziny.

    require 'tiny_tds'  
    client = TinyTds::Client.new username: 'yourusername@yourserver', password: 'yourpassword',  
    host: 'yourserver.database.windows.net', port: 1433,  
    database: 'AdventureWorks', azure:true  
    results = client.execute("SET ANSI_NULLS ON")  
    results = client.execute("SET CURSOR_CLOSE_ON_COMMIT OFF")  
    results = client.execute("SET ANSI_NULL_DFLT_ON ON")  
    results = client.execute("SET IMPLICIT_TRANSACTIONS OFF")  
    results = client.execute("SET ANSI_PADDING ON")  
    results = client.execute("SET QUOTED_IDENTIFIER ON")  
    results = client.execute("SET ANSI_WARNINGS ON")  
    results = client.execute("SET CONCAT_NULL_YIELDS_NULL ON")  
    require 'date'  
    t = Time.now  
    curr_date = t.strftime("%Y-%m-%d %H:%M:%S.%L")  
    results = client.execute("INSERT SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate)  
    OUTPUT INSERTED.ProductID VALUES ('SQL Server Express New', 'SQLEXPRESS New', 0, 0, '#{curr_date}' )")  
    results.each do |row|  
    puts row  
    end