Litt ADO.NET i IronRuby


torsdag 8. juli 2010 Databaser IronRuby Ruby

For automatisering av driftsrutiner og andre ad-hoc oppgaver er det gull å ha et bra, dynamisk skriptspråk tilgjengelig. Og med IronRuby får du også tilgang til å bruke hele .Net-rammeverket, så da har du i både pose og sekk for å si det sånn. Akkurat nå sitter jeg og lager noen ADO.Net-spørringer mot SQL Server i IronRuby, og tenkte det kunne være greit å vise hvor enkelt det er.

Så uten noe mer fjas og vas, her er et eksempel hvor jeg henter ut noe data og printer det til konsollet:

1 load_assembly 'System.Data'
2 include System::Data::SqlClient
3
4 # Utility method to open a DB connection, read and print
5 # some data based on a SQL command and a hash of field
6 # display names and related ordinals in the recordset.
7 def execute_read connection_string, sql, fields
8   connection = SqlConnection.new connection_string
9   command = SqlCommand.new sql, connection
10   connection.open
11
12   reader = command.execute_reader
13   while reader.read
14     puts fields.inject({}) do |acc, field|
15       "#{acc} #{field.first}: #{reader[field.last]}" 
16     end
17   end
18   connection.close
19 end
20
21 execute_read(
22   "User ID=foo;Password=bar;Data Source=THEBOSS\\SQL2005;Initial Catalog=theDB;",
23   "SELECT * from Rule",
24   "Id" => 0, "Name" => 1, "Active" => 3, "Transp" => 4)

Så lett er det å inkludere et namespace fra .Net-rammeverket og ta det i bruk.

Det eneste som kan være litt vanskelig å tyde her er måten jeg skriver ut rader til konsollet på – jeg har blitt så utrolig glad i inject (aggregate/reduce/fold/whatever) i det siste, og bruker det hele tiden, men det resulterer ikke alltid i den mest lesbare koden i verden for dem som ikke er vandt til slikt ;)

Les også: Slette/tømme MSMQ-køer med IronRuby.


comments powered by Disqus