# Help on SQLITE3-ruby (1.2.3) Windows problem

**URL:** <https://www.ruby-forum.com/t/help-on-sqlite3-ruby-1-2-3-windows-problem/158515>\
**Category:** Ruby\
**Created:** [January 24, 2009, 6:10am UTC](https://www.ruby-forum.com/t/help-on-sqlite3-ruby-1-2-3-windows-problem/158515 "2009-01-24T06:10:56Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [January 24, 2009, 6:10am UTC](https://www.ruby-forum.com/t/help-on-sqlite3-ruby-1-2-3-windows-problem/158515/1 "2009-01-24T06:10:56Z")

</div>

Your Help please:

I have installed sqlite3 in directory : c:\tools\sqlite3  
and performed gem install : gem install sqlite3-ruby-1.2.3-  
mswin32.gem

test2.rb program:  
#--------------------------------------------------------------  
require ‘rubygems’  
require ‘sqlite3/database’  
require ‘sqlite3’

File.delete “test.db” rescue nil

db = SQLite3::Database.new( “test.db” )  
sql = \<\<SQL  
create table the\_table (  
a varchar2(30),  
b varchar2(30)  
);

```
 insert into the_table values ( 'one', 'two' );
 insert into the_table values ( 'three', 'four' );
 insert into the_table values ( 'five', 'six' );

```

SQL

db.execute\_batch( sql )

db.execute( “select \* from the\_table” ) do |row|  
p row  
end  
#-----------------------------------------------------------

\*\* upon executing the program: ruby test2.rb

it can not file sqlite3.dll

But when I move aa copy of sqlite3.dll into the same directory as  
test2.rb  
then everything runs OK.

Question: How do I condition sqlite3-ruby to load the sqlite3.dll  
from the directory c:\tools\sqlite3?

Thanks for your assistance,  
John

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [January 24, 2009, 10:11am UTC](https://www.ruby-forum.com/t/help-on-sqlite3-ruby-1-2-3-windows-problem/158515/2 "2009-01-24T10:11:19Z")

</div>

On Jan 24, 6:08 am, removed\_email\_address@domain.invalid wrote:

> require ‘sqlite3’  
> insert into the\_table values ( ‘one’, ‘two’ );
> 
> Thanks for your assistance,  
> John

Put c:\tools\sqlite3 in the PATH environment variable.

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [January 24, 2009, 5:05pm UTC](https://www.ruby-forum.com/t/help-on-sqlite3-ruby-1-2-3-windows-problem/158515/3 "2009-01-24T17:05:33Z")

</div>

On Jan 24, 3:08 am, removed\_email\_address@domain.invalid wrote:

> require ‘sqlite3’  
> insert into the\_table values ( ‘one’, ‘two’ );
> 
> Thanks for your assistance,  
> John

For Windows to load shared libraries (.dll) needs to find those in any  
of the directories of PATH, including the directory where the  
executable (ruby.exe) is located.

Now, this is similar to LD\_LIBRARY\_PATH on \*nix, but playing with it  
is considered harmful [1]

sqlite3-ruby is built on Windows against the binary version of SQLite,  
which requires the dll to be found in the PATH.

One alternative is add c:\tools\sqlite3 to the PATH:

SET PATH=%PATH%;C:\tools\sqlite3

The other alternative is put sqlite3.dll binary in the Ruby folder.

[1] [Should I set LD\_LIBRARY\_PATH?](http://linuxmafia.com/faq/Admin/ld-lib-path.html)

HTH,

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [January 24, 2009, 7:46pm UTC](https://www.ruby-forum.com/t/help-on-sqlite3-ruby-1-2-3-windows-problem/158515/4 "2009-01-24T19:46:14Z")

</div>

On Sun, Jan 25, 2009 at 01:03:08AM +0900, Luis L. wrote:

> > require ‘sqlite3/database’
> > 
> > #-----------------------------------------------------------  
> > from the directory c:\tools\sqlite3?
> 
> sqlite3-ruby is built on Windows against the binary version of SQLite,  
> which requires the dll to be found in the PATH.
> 
> One alternative is add c:\tools\sqlite3 to the PATH:
> 
> SET PATH=%PATH%;C:\tools\sqlite3
> 
> The other alternative is put sqlite3.dll binary in the Ruby folder.

Another option is to use Amalgalite which embeds SQLite in the ruby  
extension,  
no need to download the sqlite3.dll separately. If you are using sqlite  
directly then that is a good option. if you need to use ActiveRecord or  
Sequel  
or something like that, the drivers for ORM’s do not exist, yet.

enjoy,

-jeremy
