Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento příklad by se měl považovat pouze za důkaz konceptu. Vzorový kód je zjednodušený pro přehlednost a nemusí nutně představovat osvědčené postupy doporučené Microsoftem.
Krok 1: Připojení
Funkce TinyTDS::Client slouží k připojení ke službě 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: Provedení dotazu
Zkopírujte a vložte následující kód do prázdného souboru. Pojmenujte to test.rb. Pak ho spusťte zadáním následujícího příkazu z příkazového řádku:
ruby test.rb
V ukázce kódu se funkce TinyTds::Result používá k načtení sady výsledků z dotazu na službu SQL Database. Tato funkce přijme dotaz a vrátí sadu výsledků. Sada výsledků se iteruje pomocí 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: Vložení řádku
V tomto příkladu se dozvíte, jak bezpečně spustit příkaz INSERT a předat parametry, které chrání vaši aplikaci před hodnotou injektáže SQL .
Pokud chcete použít TinyTDS s Azure, doporučujeme spustit několik SET příkazů, abyste změnili způsob, jakým aktuální relace zpracovává konkrétní informace. Doporučené SET příkazy jsou k dispozici v ukázce kódu. Například SET ANSI_NULL_DFLT_ON umožní vytvoření nových sloupců, které umožní hodnoty null i v případě, že stav nullability sloupce není explicitně uveden.
K zarovnání s formátem datetime serveru Microsoft SQL Server použijte funkci strftime pro převedení na odpovídající formá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