Megosztás a következőn keresztül:


3. lépés: Az SQL-hez a Ruby használatával való csatlakozás koncepciójának igazolása

Ezt a példát csak a koncepció bizonyítékának kell tekinteni. A mintakód egyszerűsítve van az egyértelműség kedvéért, és nem feltétlenül felel meg a Microsoft által ajánlott ajánlott eljárásoknak.

1. lépés: Csatlakozás

A TinyTDS::Client függvény az SQL Database-hez való csatlakozáshoz használható.

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

2. lépés: Lekérdezés végrehajtása

Másolja és illessze be a következő kódot egy üres fájlba. Nevezd test.rb- nek. Ezután hajtsa végre a következő parancs beírásával a parancssorból:

    ruby test.rb  

A kódmintában a TinyTds::Result függvény az SQL Database-beli lekérdezések eredményhalmazának lekérésére szolgál. Ez a függvény egy lekérdezést fogad el, és eredményhalmazt ad vissza. Az eredményhalmaz a result.each do |row|használatával van iterálva.

    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  

3. lépés: Sor beszúrása

Ebben a példában látni fogja, hogyan hajthat végre biztonságosan egy INSERT utasítást, hogyan adhat meg olyan paramétereket, amelyek megvédik az alkalmazást az SQL-injektálási értéktől.

Ha a TinyTDS-t az Azure-ral szeretné használni, javasoljuk, hogy több SET utasítást is végrehajtson annak módosításához, hogy az aktuális munkamenet hogyan kezelje az adott információkat. A javasolt SET utasításokat a kódmintában adták meg. Lehetővé teszi például, hogy az új oszlopok null értékeket engedélyezzenek akkor is, SET ANSI_NULL_DFLT_ON ha az oszlop nullképességi állapota nincs explicit módon megadva.

A Microsoft SQL Server datetime formátumával való összhang érdekében használja az strftime függvényt, hogy az adatokat a megfelelő datetime formátumra alakítsa át.

    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