Compartir a través de


Paso 3: Prueba de concepto de conexión a SQL mediante Ruby

Solo debe considerarse a este ejemplo una prueba de concepto. El código de ejemplo se simplifica para mayor claridad y no representa necesariamente los procedimientos recomendados por Microsoft.

Paso 1: Conectar

La función TinyTDS::Client se usa para conectarse a 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  

Paso 2: Ejecutar una consulta

Copie y pegue el código siguiente en un archivo vacío. Llámalo test.rb. A continuación, ejecútelo escribiendo el siguiente comando en la línea de comandos:

    ruby test.rb  

En el ejemplo de código, la función TinyTds::Result se usa para recuperar un conjunto de resultados de una consulta en SQL Database. Esta función acepta una consulta y devuelve un conjunto de resultados. El conjunto de resultados se recorre utilizando 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  

Paso 3: Inserción de una fila

En este ejemplo, se mostrará cómo llevar a cabo una instrucción INSERT de forma segura, pasar parámetros que protegen su aplicación de valores de inyección SQL.

Para usar TinyTDS con Azure, se recomienda ejecutar varias SET instrucciones para cambiar la forma en que la sesión actual controla información específica. Las instrucciones recomendadas SET se proporcionan en el ejemplo de código. Por ejemplo, SET ANSI_NULL_DFLT_ON permitirá que las columnas nuevas creadas permitan valores NULL aunque el estado de nulabilidad de la columna no se indique explícitamente.

Para alinearse con el formato datetime de Microsoft SQL Server, use la función strftime para convertir al formato datetime correspondiente.

    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