Executing SQL Query through ruby using winole32

Hi,

I used the following code to connect to SQL Server:

require 'win32ole'
server = WIN32OLE.new('SQLDMO.SQLServer')
server.connect('113.212.133.232,1423','username','password')
database = server.Databases('DIT_Photon_1007')
for table in database.Tables
   puts table.Name
end

When i execute this, it successfully gives me all the table names for
the DB ('DIT_Photon_1007')

But I want to execute a query, and for that I am using this code:

output = database.execute('Select * from dbo.tLNPOrderStatus')
puts output

But I am getting the error like "method missing"
(Execute)(WIN32OLERuntimeError)

Can anybody help me which method would be used to execute a query in
win32ole?
I even tried database.query('....'), server.query('....') and
server.execute('....') but no luck.

Thanks,
Anukul

···

--
Posted via http://www.ruby-forum.com/.

I did a little research on SQL-DMO and came up with this:

output = database.ExecuteWithResults('Select * from dbo.tLNPOrderStatus')

puts "There are #{output.Rows} records."

puts

# this iterates through the first column of each record returned
# if you want a different column, change the second 1 to a different number
output.Rows.times { |row| puts output.GetColumnString(row + 1, 1) }

Jac

···

On Thu, May 8, 2008 at 7:30 AM, Anukul Singhal <anukul.singhal@gmail.com> wrote:

Hi,

I used the following code to connect to SQL Server:

require 'win32ole'
server = WIN32OLE.new('SQLDMO.SQLServer')
server.connect('113.212.133.232,1423','username','password')
database = server.Databases('DIT_Photon_1007')
for table in database.Tables
  puts table.Name
end

When i execute this, it successfully gives me all the table names for
the DB ('DIT_Photon_1007')

But I want to execute a query, and for that I am using this code:

output = database.execute('Select * from dbo.tLNPOrderStatus')
puts output

But I am getting the error like "method missing"
(Execute)(WIN32OLERuntimeError)

Can anybody help me which method would be used to execute a query in
win32ole?
I even tried database.query('....'), server.query('....') and
server.execute('....') but no luck.

Thanks,
Anukul
--
Posted via http://www.ruby-forum.com/.

Anukul Singhal wrote:

Hi,

Can anybody help me which method would be used to execute a query in
win32ole?
I even tried database.query('....'), server.query('....') and
server.execute('....') but no luck.

Thanks,
Anukul

Just out of curiosity, is there a specific reason you're using win32ole?
Using something such as DBI / mysql gems are often times much easier to
use.

IE:

require 'mysql'

server = Mysql.new("hostname","username","password","database")

results = []

qy = server.query("SELECT * FROM table")

qy.each do |x|
x.each do |z|
results << z
end
end

Regards,

- Mac

···

--
Posted via http://www.ruby-forum.com/.

Hello,

Anukul Singhal wrote:
> server.connect('113.212.133.232,1423','username','password')
> database = server.Databases('DIT_Photon_1007')
>
> Can anybody help me which method would be used to execute a query in
> win32ole?
Sorry, I don't know how to execute a query using SQLDMO.SQLServer,
but how about using ADODB.Connection instead of SQLDMO.SQLServer?

conn = WIN32OLE.new('ADODB.Connection')
conn.ConnectionString = 'Provider=SQLOLEDB;' +
   'User ID=username;' +
   'Password=password;' +
   'Data Source=113.212.133.232;' +
   'Initial Catalog=DIT_Photon_1007'
conn.open
rs = conn.execute('Select * from dbo.tLNPOrderStatus')
puts rs.fields.item(0).value

   Regards,
   Masaki Suketa

Michael Linfield wrote:

Anukul Singhal wrote:

Hi,

Can anybody help me which method would be used to execute a query in
win32ole?
I even tried database.query('....'), server.query('....') and
server.execute('....') but no luck.

Thanks,
Anukul

Just out of curiosity, is there a specific reason you're using win32ole?
Using something such as DBI / mysql gems are often times much easier to
use.

IE:

require 'mysql'

server = Mysql.new("hostname","username","password","database")

results = []

qy = server.query("SELECT * FROM table")

qy.each do |x|
x.each do |z|
results << z
end
end

Regards,

- Mac

Mac,

Thanks for your help.

I am using SQL Server, can you help me with the corresponding code for
that?

Thanks,
Anukul

···

--
Posted via http://www.ruby-forum.com/.

I am using SQL Server, can you help me with the corresponding code for
that?

Which SQL server are you working with?
Some possibilities include...

SQLite3
PostgreSQL
MySQL

(These are the 3 that are most commonly used with Ruby I'd say)

Let me know what server you are running and I'll be happy to help.

Regards,

- Mac

···

--
Posted via http://www.ruby-forum.com/.