						     2001ǯ 320 
========
 
========

  ܥ⥸塼ϡruby  SyBase SQLФ򥢥뤿γĥ
֥Ǥ

  SyBaseФȤΥ󥿡եˤϡ١饤ȥ饤֥
꡼ѤƤޤ

  ʬλȤϰϤƤޤäˡ
        * ĥ顼åν
	* ʥߥå SQL
	* RDBC μ
ʤɡͤˤäƤϽפȻפʬƤޤ

==========
Ѿ
==========
  Ruby Τ۾˽äƲ

==========
ư
==========
  ruby-1.3.X ʾȡSyBase ץ󥯥饤ȥ饤֥꡼ɬפǤ
  
========
INSTALL
========

1. 餫ᡢruby-1.3.Xʾ ȡSyBase 򥤥󥹥ȡ뤷ƤƤ

    Linux ǤSyBase ˤĤ
    -----------------------------
       Linux  Adaptive Server Enterprise 11.0.3ξ硢ܸĶǻ
      ˤϡRDBMS  ɲå⥸塼ե(locales-diff.tar.gz)
      󥹥ȡ뤷ȡ
	      /opt/sybase/locales/locales.dat 
       [linux] ιܤˡʲΥȥ꡼ɲäƤ
	      locale = ja_JP.ujis, japanese, eucjis
              locale = ja_JP.EUC-JP, japanese, eucjis

2. ֤Ÿ

  % gzip -d <sybct-ruby-0.2.7.tar.gz | tar xvf -


3. sybct-ruby-0.2.7 ǥ쥯ȥ˰ư

  % cd sybct-ruby-0.2.7

4. ɬפʤСextconf.rb Ƥ

  extconf.rb  linux + gcc + ASE12.5 ѤꤷƤޤ
  ¾δĶξϡ
    sybase = "/opt/sybase-12.5"
    sybase_ocs = "#{sybase}/OCS-12_5"
    $CFLAGS $LDFLAGS  $LOCAL_LIBS 
εҤѤĶ˹碌ѹƤ

5. Makefile κ
 % ruby extconf.rb

6. make 
 % make


7. ƥȥץμ¹

  Ǥˤɤ SyBase SQL ФưƤСʲΥץȤư
ǧǽǤ

    % echo $SYBASE ; echo $SYBASE_OCS  # check the $SYBASE environment variable
    % LD_LIBRARY_PATH="${SYBASE}/${SYBASE_OCS}/lib" ; export LD_LIBRARY_PATH
    % cd sample
    % ruby -I ../ ./sqlsample.rb -S dbserver -U sa -P XXXXXX 
    % ruby -I ../ ./rpcsample.rb  -S dbserver -U sa -P XXXXXX 

  dbserver ˤϻѤ SyBaseФ̾ꤷƤXXXXXX 
sa 桼ΥѥɤǤ
    

8. 󥹥ȡ

  sybct.o sybct.so sybct.rb sybsql.rb  $LOAD_PATH Τɤ˥ԡ
Ƥ

  㤨С
  % su
  $ cp sybct.o sybct.so sybct.rb sybsql.rb /usr/local/lib/ruby/site_ruby/1.8/i686-linux/
Ǥ


=======
Ȥ
=======
  ƥ饹Ƥ᥽åɤξܺ٤ˤĤƤϡdoc/index.html 
ߤƤ ǤϡȤꤢѤ뤿δñԤʤ


* ե졼 *
--------------
  ʲˡɽŪʥץߥ󥰼򼨤ޤΤǡͤˤƤ
  
(1) 饤֥꡼Υ
  require "sybsql.rb"

(2) åХåκ
  ɬפʤСѤΥåХå᥽åɤޤ

  SybSQLContext 饹ˡ
	srvmsgCB	----	ХåХå
	cltmsgCB	----    饤ȥåХå
ĤΥåХåѥ᥽åɤƤޤΤǡ
ĤŬ˺Ƥ
  ܺ٤ϡsybsql.rb  ڤ doc/SybSQLContext.html ߤƤ

  ⤷ʤСǥեȤΥХåΤޤŬѤޤ

(3) ФȤ³Ω롣
  q = SybSQL.new(hash)   SybSQL󥹥 q Ƥ
λǡSQLФȤ³Ωޤ

  hash ˤϡ̾Ⱦ󡢸 ʤɤꤷޤ
  ʥˤϡ

	'S' => '̾
	'U' => 'login 桼̾'
	'P' => 'ѥ'
        'lang' => 'locales.dat ϿƤ̾'
	'timeout' => ³ॢ
        'async' => ޥåɥץꥱξ硢 true  
                  ʾάfalse

ʤɤޤܺ٤ϡdoc/SybSQL.html ߤƤ

  ³ϡq.close ᥽åɤȯԤ뤫⤷ϡSybSQL󥹥
(ξ qˤRuby ˤäƥ١쥯󤵤ޤͭǤ

(4) SQLȯ
  select ʸΤ褦ˡ֤SQLޥɤȯԤˤϡSybSQL 饹 
sql᥽åɤȤäƤ
  insert, use db ʤɤΥ֤ʤޥɤˤĤƤϡsql_norow 
åɤѤñ˽Ǥޤ

(5) SQLȯԤݳǧ
  sql_norow ᥽åɤˤĤƤϡ֤ͤ true ʤС
Ƥޤ
  sql ᥽åɤη̤ϡľ cmd_done? ᥽åɤ֤(true / false
)ȽǤޤ

(6) ̤μ
  sql  sql_norow ᥽åɤη̤ϡSybResult ֥Ȥ
ȤơSybSQLΥ󥹥ѿ˳ǼƤޤ

  ϡSybSQLresults᥽åɤǼФȤǤޤ
ƤϡSybSQL top_row_result᥽åɤѤޤ
  top_row_result ϡ̥ǡΤǽ̤֤̾
åɤǤäơsql᥽åɤʣselectʸꤷꡢʣ
ǡ֤üʥȥɥץꤷʤ¤ͭǤ

  SybResult 󶡤Ƥ롢̥ǡ򥢥뤿Ρʥ᥽
ɤˤϡ

  rows
	̤פȤ֤ޤ
	[ [Υǡ .... ] [Υǡ .... ] ...[Υǡ .... ] ]

  nthrow(nth, col=nil )
	colά줿
		nth ܤη̥֤ޤ  [nth Υǡ .... ]
	colʤ顢
		nth ܤη̥ΡcolܤΥǡ֤ޤ
	colʸʤ顢
		nth ܤη̥Ρ'col'Υǡ֤ޤ
  columns
       ̤ΥStringΡפȤ֤ޤ

ʤɤޤ

(7) ³Υ
  SybSQL  close ᥽åɤȯԤˤꡢ³Ǥޤ
  ³ˤϡ(3) äƿ SybSQL֥Ȥʤ
Фʤޤ


* ñʡSQLȯԥץ
---------------------------------
  ʲˡºݤΥץ򼨤ޤ

      require "sybsql.rb"  # ĥ饤֥꡼Υ
      begin

	# ̾ SYBASEˡ 桼 sa, ѥ 'PassWord' ³
	query=SybSQL.new( {'S'=>'SYBASE', 'U'=>'sa', 'P'=>'PassWord'} )

	# mydb ǡ١ Ȥ
	raise "ERROR use mydb" unless( query.sql_norow("use mydb") )

	# SQLȯ
	query.sql("select * from theTable")
	# ERROR å
	raise "ERROR SELECT" unless (query.cmd_done? )

	# ǽ̥̾åȤ res ˼
	res = query.top_row_result

	# ̾Υץ  
	print res.columns.join(','), "\n"

	# ǡΥץ
	res.rows.each {
	  |r| print r.join('|'), "\n"
	}

      rescue
	# 顼ɽ
	print $!,"\n"

      ensure
	# ³Ǥ饤ȥ饤֥꡼νλ
	query.close if(query.kind_of?( SybSQL ) )
      end

=====================
ץˤĤ
=====================
  sample/ ǥ쥯ȥ꡼ ʲΥץ륹ץȤޤΤǡ
ߥ󥰤λͤˤǤ⤷Ƥ

getimage.rb
------------
  Image ǡθԤʤץǤ
  SyBaseΥץǡ١ pubs2  au_pix ơ֥ϿƤ
ƤΥ᡼ǡ ǥեޤ
  Ȥϡgetimage.rb ƬΥȤ򸫤Ƥ
  
sendimage.rb
------------
  Image ǡ ɲá ԤʤץǤ
  SyBaseΥץǡ١ pubs2  au_pix ơ֥ˡꤷ
᡼եϿޤ
  Ȥϡsendimage.rb ƬΥȤ򸫤Ƥ

cursor_disp.rb, cursor_update.rb
------------------------------------
  Client-Library ΥץǤ
  ¹Ԥˤ pubs2 ǡ١ɬפǤ

isql.rb
--------
  isql ޥɤΤ褦ʤΤǤ
  ¹Ԥˤϡruby  readline ⥸塼뤬ɬפǤ
  Ȥϡisql.rb ƬΥȤ򸫤Ƥ

======================
ưǧƤĶ
======================
  ΤȤ
	OS:		Linux (Vine Linux 3.0)
	Ruby:		ruby 1.4.2 , ruby 1.6.7, ruby 1.8.2
        Sybase:		Adaptive Server Enterprise 11.0.3E6  12.5
δĶǤǧƤޤ

======================================
sybct-ruby-0.2.9 ==> sybct-ruby-0.2.10
======================================
* extconf.rb ѹ
  * 64bit linux Υѥ륪ץɲ 
    (Thanks to Hiroyuki Sato and Kiriakos Georgiou)
  * Mac OSX(tiger)  freetds(ver 0.64)  Υѥ륪ץɲ 

=====================================
sybct-ruby-0.2.8 ==> sybct-ruby-0.2.9
=====================================
* freetds Υݡ (freetds-0.64RC3 ǤưǧƤޤ)
  ޤƥȼʳǤĤεǽưޤ
  ܺ٤ϱѸREADME.txtߤƤ

* README-cygwin.txt
  cygwinǤ makeˡ񤤤Ƥߤޤ

==================================================
sybct-ruby-0.2.7 ==> sybct-ruby-0.2.8 μѹ
==================================================
* extconf.rb
  Mac OS X 10.4 Ѥε (By Scott McKenzie)

* ǿ CS_VERSION_nnn Ȥ褦ѹ ( Thanks to Will Sobel )
  

==================================================
sybct-ruby-0.2.4 ==> sybct-ruby-0.2.7 μѹ
==================================================
* extconf.rb
  ASE12.5 ξεҤɲ

* SybSQL#new 'login-timeout' °
* SybSQL#connection_status ɲ
* SybSQL#connection_dead?  ɲ

* ĤBUG餷Τ

=============================================
sybct-0.2.2 ==> sybct-ruby-0.2.4 μѹ
=============================================
* Client-Library٥Υ˰б
  ʲεǽ̤б
    + ct_keydataȤäȥκ
    + κƥץ
    + ۥѿ

* SybContext.create Ǥ async ץɲ
  sybase API ΥͥåȥˤƤ⡢rubyåɤΥƥ
ȥåڤؤ褦ˤޤ

=========================================
sybct-0.2.0 ==> sybct-0.2.2 μѹ
=========================================

* CTlib  ct_get_data/ct_send_data Ѥ Image/Textǡž
ǽ

* SybCommand.fetch  ñfetchѹ(ct_fetchˤ᤯ˡ
  SybCommand.fetch εǽϡ SybCommand.fetchloop ء

* SybSQL.sql ᥽åɤˡsql{|args..|    } ǡĸƤӽФ
֥åǤ褦ˤ
  ʵΥեåȡCS_IODESCΤ

* դ򤤤Ĥ yyyy/mm/dd hh:mm:ss ǥեå褦ˤ
  0.2.0 Ǥ localeˤäƤϡ־󤬥եåǤʤä

* SybReslt  ȥ󥶥󥹥ơȥȤ򸡺᥽
ɤɲ

=======

=======

ů

ХݡȤʤɤ tetsuhumi@aa.bb-east.ne.jp  ޤǤꤤޤ

===========
NO WARRANTY
===========
  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

