Condividi tramite


Passaggio 3: Prova di concetto per la connessione a SQL con Ruby

Questo esempio deve essere considerato solo un modello di verifica. Il codice di esempio è semplificato per maggiore chiarezza e non rappresenta necessariamente le procedure consigliate da Microsoft.

Passaggio 1: Connessione

La funzione TinyTDS::Client viene usata per connettersi al database SQL.

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

Passaggio 2: Eseguire una query

Copiare e incollare il codice seguente in un file vuoto. Chiamalo test.rb. Eseguirlo immettendo il comando seguente dal prompt dei comandi:

    ruby test.rb  

Nell'esempio di codice viene usata la funzione TinyTds::Result per recuperare un set di risultati da una query sul database SQL. Questa funzione accetta una query e restituisce un set di risultati. Il set di risultati viene iterato tramite 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  

Passaggio 3: Inserire una riga

In questo esempio si vedrà come eseguire un'istruzione INSERT in modo sicuro, passare i parametri che proteggono l'applicazione dal valore sql injection .

Per usare TinyTDS con Azure, è consigliabile eseguire diverse SET istruzioni per modificare il modo in cui la sessione corrente gestisce informazioni specifiche. Le istruzioni consigliate SET vengono fornite nell'esempio di codice. Ad esempio, SET ANSI_NULL_DFLT_ON consentirà la creazione di nuove colonne per consentire valori Null anche se lo stato di nullità della colonna non è dichiarato in modo esplicito.

Per allinearsi al formato datetime di Microsoft SQL Server, usare la funzione strftime per eseguire il cast nel formato datetime corrispondente.

    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