Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet exemple doit être considéré uniquement comme une preuve de concept. L’exemple de code est simplifié par souci de clarté et ne représente pas nécessairement les meilleures pratiques recommandées par Microsoft.
Étape 1 : Se connecter
La fonction TinyTDS ::Client est utilisée pour se connecter à 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
Étape 2 : Exécuter une requête
Copiez et collez le code suivant dans un fichier vide. Appelez-le test.rb. Ensuite, exécutez-le en entrant la commande suivante à partir de votre invite de commandes :
ruby test.rb
Dans l’exemple de code, la fonction TinyTds ::Result est utilisée pour récupérer un jeu de résultats à partir d’une requête sur SQL Database. Cette fonction accepte une requête et retourne un jeu de résultats. Le jeu de résultats est itéré à l’aide de 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
Étape 3 : Insérer une ligne
Dans cet exemple, vous verrez comment exécuter une instruction INSERT en toute sécurité, transmettre des paramètres qui protègent votre application contre la valeur d’injection SQL .
Pour utiliser TinyTDS avec Azure, il est recommandé d’exécuter plusieurs SET instructions pour modifier la façon dont la session active gère des informations spécifiques. Les instructions recommandées SET sont incluses dans l’exemple de code. Par exemple, SET ANSI_NULL_DFLT_ON permet aux nouvelles colonnes créées d’autoriser les valeurs Null, même si l’état nullabilité de la colonne n’est pas explicitement indiqué.
Pour s’aligner sur le format datetime de Microsoft SQL Server, utilisez la fonction strftime pour effectuer un cast au format datetime correspondant.
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