I have a ruby script that inserts data into a SQL Server Express
database. The inserts work but I keep getting errors like the following
"WARNING: STMT 0x2954f50 was not dropped before garbage collection."
Here's the script
···
==========================
require 'odbc'
c=ODBC::connect('SMD')
t1 = Time.now
aFile = File.open("C://temp/DMERECAP.SDF")
aFile.each_line do |line|
if $. < 11
q =c.prepare("Insert into
DMERECAP(recptlo,datepaid,invoicenum,dolapplied,payername,hcpc,servdatepd,patnum)
values ('#{line[0..6].squeeze(" ")}' ,'#{line[7..16].squeeze(" ")}',
'#{line[17..28].squeeze(" ")}', '#{line[29..40].squeeze(" ")}',
'#{line[48..87].squeeze(" ")}', '#{line[88..92].squeeze(" ")}',
'#{line[145..154].squeeze(" ")}', '#{line[138..145].squeeze("
").to_i}')")
q.execute()
end
end
puts "Import complete."
puts Time.now-t1
if c
c.disconnect
end
============
Any help would be appreciated.
thanks,
Luis
--
Posted via http://www.ruby-forum.com/.
Hi Luis,
I asked Christian Werner about this in the past. He told me that these are internal warnings intended to remind the lazy programmer to close/drop his ODBC statements. If you don't do so, their cleanup doesn't occur until garbage collection. Christian said these warnings are "...not a bug but a feature."
Try q.drop after q.execute and see if that fixes things for you..
Ben
Luis Lebron wrote:
···
I have a ruby script that inserts data into a SQL Server Express database. The inserts work but I keep getting errors like the following
"WARNING: STMT 0x2954f50 was not dropped before garbage collection."
Here's the script
require 'odbc'
c=ODBC::connect('SMD')
t1 = Time.now
aFile = File.open("C://temp/DMERECAP.SDF")
aFile.each_line do |line|
if $. < 11
q =c.prepare("Insert into DMERECAP(recptlo,datepaid,invoicenum,dolapplied,payername,hcpc,servdatepd,patnum) values ('#{line[0..6].squeeze(" ")}' ,'#{line[7..16].squeeze(" ")}', '#{line[17..28].squeeze(" ")}', '#{line[29..40].squeeze(" ")}', '#{line[48..87].squeeze(" ")}', '#{line[88..92].squeeze(" ")}', '#{line[145..154].squeeze(" ")}', '#{line[138..145].squeeze(" ").to_i}')")
q.execute()
end
end
puts "Import complete."
puts Time.now-t1
if c
c.disconnect
end
============
Any help would be appreciated.
thanks,
Luis