home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _533a7cf8686db5aafc6fd70fcf6d05aa < prev    next >
Text File  |  2000-03-23  |  23KB  |  459 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>DBD::ODBC - ODBC Driver for DBI</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> DBD::ODBC - ODBC Driver for DBI</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <UL>
  26.  
  27.         <LI><A HREF="#recent updates">Recent Updates</A></LI>
  28.         <LI><A HREF="#private functions for odbc api access">Private functions for ODBC API access</A></LI>
  29.         <LI><A HREF="#using dbd::odbc with web servers under win32.">Using DBD::ODBC with web servers under Win32.</A></LI>
  30.         <LI><A HREF="#random links">Random Links</A></LI>
  31.         <LI><A HREF="#frequently asked questions">Frequently Asked Questions</A></LI>
  32.     </UL>
  33.  
  34. </UL>
  35. <!-- INDEX END -->
  36.  
  37. <HR>
  38. <P>
  39. <H1><A NAME="name">NAME</A></H1>
  40. <P>DBD::ODBC - ODBC Driver for DBI</P>
  41. <P>
  42. <HR>
  43. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  44. <UL>
  45. <LI>Windows</LI>
  46. </UL>
  47. <HR>
  48. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  49. <PRE>
  50.   use DBI;</PRE>
  51. <PRE>
  52.   $dbh = DBI->connect('dbi:ODBC:DSN', 'user', 'password');</PRE>
  53. <P>See <A HREF="../../../site/lib/DBI.html">the DBI manpage</A> for more information.</P>
  54. <P>
  55. <HR>
  56. <H1><A NAME="description">DESCRIPTION</A></H1>
  57. <P>
  58. <H2><A NAME="recent updates">Recent Updates</A></H2>
  59. <DL>
  60. <DT><STRONG><A NAME="item_DBD%3A%3AODBC_0%2E26"><STRONG>DBD::ODBC 0.26</STRONG></A></STRONG><BR>
  61. <DD>
  62. Put in patch for returning only positive rowcounts from dbd_st_execute.  The original patch
  63. was submitted by Jon Smirl and put back in by David Good.  Reasoning seems sound, so I put it
  64. back in.  However, any databases that return negative rowcounts for specific reasons,
  65. will no longer do so.
  66. <P>Put in David Good's patch for multiple result sets.  Thanks David!  See mytest\moreresults.pl for
  67. an example of usage.</P>
  68. <P>Added readme.txt in iodbcsrc explaining an issue there with iODBC 2.50.3 and <CODE>data_sources</CODE>.</P>
  69. <P>Put in rudimentary cancel support via SQLCancel.  Call $sth->cencel to utilize.  However, it is largely
  70. untested by me, as I do not have a good sample for this yet.  It may come in handy with threaded
  71. perl, someday or it may work in a signal handler.
  72. </P>
  73. <PRE>
  74.  
  75. =over 8</PRE>
  76. <P></P>
  77. <DT><STRONG><A NAME="item_DBD%3A%3AODBC_0%2E25"><STRONG>DBD::ODBC 0.25</STRONG></A></STRONG><BR>
  78. <DD>
  79. Added conditional compilation for SQL_WVARCHAR and SQL_WLONGVARCHAR.  If they
  80. are not defined by your driver manager, they will not be compiled in to the code.
  81. If you would like to support these types on some platforms, you may be able to
  82.  #define SQL_WVARCHAR (-9)
  83.  #define SQL_WLONGVARCHAR (-10)
  84. <P>Added more long tests with binding in t\09bind.t.  Note use of bind_param!
  85. </P>
  86. <PRE>
  87.  
  88. =item B<DBD::ODBC 0.24></PRE>
  89. <P>Fixed Test #13 in 02simple.t.  Would fail, improperly, if there was only one data source defined.</P>
  90. <P>Fixed (hopefully) SQL Server 7 and ntext type ``Out of Memory!'' errors via patch from Thomas Lowery.  Thanks Thomas!</P>
  91. <P>Added more support for Solid to handle the fact that it does not support data_sources nor SQLDriverConnect.
  92.  Patch supplied by Samuli Karkkainen <A HREF="mailto:[skarkkai@woods.iki.fi].">[skarkkai@woods.iki.fi].</A>  Thanks!  It's untested by me, however.</P>
  93. <P>Added some information from Adam Curtin about a bug in iodbc 2.50.3's data_sources.  See
  94.    iodbcsrc\readme.txt.</P>
  95. <P>Added information in this pod from Stephen Arehart regarding DSNLess connections.</P>
  96. <P>Added fix for sp_prepare/sp_execute bug reported by Paul G. Weiss.</P>
  97. <P>Added some code for handling a hint on disconnect where the user gets an error for not committing.
  98. </P>
  99. <PRE>
  100.  
  101. =item B<DBD::ODBC 0.22></PRE>
  102. <P>Fixed for threaded perl builds.  Note that this was tested only on Win32, with no threads in use and using DBI 1.13.
  103. Note, for ActiveState/PERL_OBJECT builds, DBI 1.13_01 is required as of 9/8/99.  
  104. If you are using ActiveState's perl, this can be installed by using PPM.</P>
  105. <P></P>
  106. <DT><STRONG><A NAME="item_DBD%3A%3AODBC_0%2E21"><STRONG>DBD::ODBC 0.21</STRONG></A></STRONG><BR>
  107. <DD>
  108. Thanks to all who provided patches!
  109. <P>Added ability to connect to an ODBC source without prior creation of DSN.  See mytest/contest.pl for example with MS Access.
  110. (Also note that you will need documentation for your ODBC driver -- which, sadly, can be difficult to find).</P>
  111. <P>Fixed case sensitivity in tests.</P>
  112. <P>Hopefully fixed test #4 in t/09bind.t.  Updated it to insert the date column and updated it to find the right
  113. type of the column.  However, it doesn't seem to work on my Linux test machine, using the OpenLink drivers 
  114. with MS-SQL Server (6.5).  It complains about binding the date time.  The same test works under Win32 with 
  115. SQL Server 6.5, Oracle 8.0.3 and MS Access 97 ODBC drivers.  Hmmph.</P>
  116. <P>Fixed some binary type issues (patches from Jon Smirl)</P>
  117. <P>Added SQLStatistics, SQLForeignKeys, SQLPrimaryKeys (patches from Jon Smirl)
  118. Thanks (again), Jon, for providing the build_results function to help reduce duplicate code!</P>
  119. <P>Worked on LongTruncOk for Openlink drivers.</P>
  120. <P>Note: those trying to bind variables need to remember that you should use the following syntax:</P>
  121. <PRE>
  122.         use DBI;
  123.         ...
  124.         $sth->bind_param(1, $str, DBI::SQL_LONGVARCHAR);</PRE>
  125. <P>Added support for unixodbc (per Nick Gorham)
  126. Added support for OpenLinks udbc (per Patrick van Kleef)
  127. Added Support for esodbc (per Martin Evans)
  128. Added Support for Easysoft (per Bob Kline)</P>
  129. <P>Changed table_info to produce a list of views, too.
  130. Fixed bug in SQLColumns call.
  131. Fixed blob handling via patches from Jochen Wiedmann.
  132. Added data_sources capability via snarfing code from DBD::Adabas (Jochen Wiedmann)</P>
  133. <P></P>
  134. <DT><STRONG><A NAME="item_DBD%3A%3AODBC_0%2E20"><STRONG>DBD::ODBC 0.20</STRONG></A></STRONG><BR>
  135. <DD>
  136. SQLColAttributes fixes for SQL Server and MySQL. Fixed tables method
  137. by renaming to new table_info method. Added new tyoe_info_all method.
  138. Improved Makefile.PL support for Adabase.
  139. <P></P>
  140. <DT><STRONG><A NAME="item_DBD%3A%3AODBC_0%2E19"><STRONG>DBD::ODBC 0.19</STRONG></A></STRONG><BR>
  141. <DD>
  142. Added iODBC source code to distribution.Fall-back to using iODBC header
  143. files in some cases.
  144. <P></P>
  145. <DT><STRONG><A NAME="item_DBD%3A%3AODBC_0%2E18"><STRONG>DBD::ODBC 0.18</STRONG></A></STRONG><BR>
  146. <DD>
  147. Enhancements to build process. Better handling of errors in
  148. error handling code.
  149. <P></P>
  150. <DT><STRONG><A NAME="item_DBD%3A%3AODBC_0%2E17"><STRONG>DBD::ODBC 0.17</STRONG></A></STRONG><BR>
  151. <DD>
  152. This release is mostly due to the good work of Jeff Urlwin.
  153. My eternal thanks to you Jeff.
  154. <P>Fixed ``SQLNumResultCols err'' on joins and 'order by' with some
  155. drivers (see Microsoft Knowledge Base article #Q124899).
  156. Thanks to Paul O'Fallon for that one.</P>
  157. <P>Added more (probably incomplete) support for unix ODBC in Makefile.PL</P>
  158. <P>Increased default SQL_COLUMN_DISPLAY_SIZE and SQL_COLUMN_LENGTH to 2000
  159. for drivers that don't provide a way to query them dynamically. Was 100!</P>
  160. <P>When fetch reaches the end-of-data it automatically frees the internal
  161. ODBC statement handle and marks the DBI statement handle as inactive
  162. (thus an explicit 'finish' is *not* required).</P>
  163. <P>Also:</P>
  164. <PRE>
  165.   LongTruncOk for Oracle ODBC (where fbh->datalen < 0)
  166.   Added tracing into SQLBindParameter (help diagnose oracle odbc bug)
  167.   Fixed/worked around bug/result from Latest Oracle ODBC driver where in
  168.      SQLColAttribute cbInfoValue was changed to 0 to indicate fDesc had a value
  169.   Added work around for compiling w/ActiveState PRK (PERL_OBJECT)
  170.   Updated tests to include date insert and type
  171.   Added more "backup" SQL_xxx types for tests                                  
  172.   Updated bind test to test binding select
  173.   NOTE: bind insert fails on Paradox driver (don't know why)</PRE>
  174. <P>Added support for: (see notes below)</P>
  175. <PRE>
  176.   SQLGetInfo       via $dbh->func(xxx, GetInfo)
  177.   SQLGetTypeInfo   via $dbh->func(xxx, GetTypeInfo)
  178.   SQLDescribeCol   via $sth->func(colno, DescribeCol)
  179.   SQLColAttributes via $sth->func(xxx, colno, ColAttributes)
  180.   SQLGetFunctions  via $dbh->func(xxx, GetFunctions)
  181.   SQLColumns       via $dbh->func(catalog, schema, table, column, 'columns')</PRE>
  182. <P>Fixed $DBI::err to reflect the real ODBC error code
  183. which is a 5 char code, not necessarily numeric.</P>
  184. <P>Fixed fetches when LongTruncOk == 1.</P>
  185. <P>Updated tests to pass more often (hopefully 100% <G>)</P>
  186. <P>Updated tests to test long reading, inserting and the LongTruncOk attribute.</P>
  187. <P>Updated tests to be less driver specific.</P>
  188. <P>They now rely upon SQLGetTypeInfo <EM>heavily</EM> in order to create the tables.
  189. The test use this function to ``ask'' the driver for the name of the SQL type
  190. to correctly create long, varchar, etc types.  For example, in Oracle the
  191. SQL_VARCHAR type is VARCHAR2, while MS Access uses TEXT for the SQL Name.  
  192. Again, in Oracle the SQL_LONGVARCHAR is LONG, while in Access it's MEMO.
  193. The tests currently handle this correctly (at least with Access and Oracle,
  194. MS SQL server will be tested also).</P>
  195. <P></P></DL>
  196. <P>
  197. <H2><A NAME="private functions for odbc api access">Private functions for ODBC API access</A></H2>
  198. <P>It is anticipated that at least some of the functions currently
  199. implemented via the <CODE>func</CODE> interface be ``moved'' into a more formal,
  200. DBI specification.  This will be when the DBI specification
  201. supports/formalizes the meta-data to implement.  Most of these
  202. functions are to obtain more information from the driver and the data
  203. source.</P>
  204. <DL>
  205. <DT><STRONG><A NAME="item_GetInfo">GetInfo</A></STRONG><BR>
  206. <DD>
  207. This function maps to the ODBC SQLGetInfo call.  This is a Level 1 ODBC
  208. function.  An example of this is:
  209. <PRE>
  210.   $value = $dbh->func(6, GetInfo);</PRE>
  211. <P>This function returns a scalar value, which can be a numeric or string value.  
  212. This depends upon the argument passed to GetInfo.</P>
  213. <P></P>
  214. <DT><STRONG><A NAME="item_SQLGetTypeInfo">SQLGetTypeInfo</A></STRONG><BR>
  215. <DD>
  216. This function maps to the ODBC SQLGetTypeInfo call.  This is a Level 1
  217. ODBC function.  An example of this is:
  218. <PRE>
  219.   use DBI qw(:sql_types);</PRE>
  220. <PRE>
  221.   $sth = $dbh->func(SQL_ALL_TYPES, GetInfo);
  222.   while (@row = $sth->fetch_row) {
  223.     ...
  224.   }</PRE>
  225. <P>This function returns a DBI statement handle, which represents a result
  226. set containing type names which are compatible with the requested
  227. type.  SQL_ALL_TYPES can be used for obtaining all the types the ODBC
  228. driver supports.  NOTE: It is VERY important that the use DBI includes
  229. the <A HREF="../../../lib/Pod/perlfunc.html#item_qw"><CODE>qw(:sql_types)</CODE></A> so that values like SQL_VARCHAR are correctly
  230. interpreted.  This ``imports'' the sql type names into the program's name
  231. space.  A very common mistake is to forget the <A HREF="../../../lib/Pod/perlfunc.html#item_qw"><CODE>qw(:sql_types)</CODE></A> and
  232. obtain strange results.</P>
  233. <P></P>
  234. <DT><STRONG><A NAME="item_GetFunctions">GetFunctions</A></STRONG><BR>
  235. <DD>
  236. This function maps to the ODBC API SQLGetFunctions.  This is a Level 1
  237. API call which returns supported driver funtions.  Depending upon how
  238. this is called, it will either return a 100 element array of true/false
  239. values or a single true false value.  If it's called with
  240. SQL_API_ALL_FUNCTIONS (0), it will return the 100 element array.
  241. Otherwise, pass the number referring to the function.  (See your ODBC
  242. docs for help with this).
  243. <P></P>
  244. <DT><STRONG><A NAME="item_SQLColumns">SQLColumns</A></STRONG><BR>
  245. <DD>
  246. Support for this function has been added in version 0.17.  It looks to be
  247. fixed in version 0.20.
  248. <P></P>
  249. <DT><STRONG><A NAME="item_Connect_without_DSN_The_ability_to_connect_without">Connect without DSN
  250. The ability to connect without a full DSN is introduced in version 0.21.</A></STRONG><BR>
  251. <DD>
  252. <TABLE CELLSPACING=0 CELLPADDING=0><TR><TD>Example (using MS Access):
  253. <TR><TD><TD>my $DSN = 'driver=Microsoft Access Driver (*.mdb);dbq=\\\\cheese\\g$\\perltest.mdb';
  254. <TR><TD><TD>my $dbh = DBI->connect(``dbi:ODBC:$DSN'', '','') 
  255. <TR><TD><TD>or die ``$DBI::errstr\n'';</TABLE>
  256. <P></P>
  257. <DT><STRONG><A NAME="item_SQLStatistics">SQLStatistics</A></STRONG><BR>
  258. <DD>
  259. <DT><STRONG><A NAME="item_SQLForeignKeys">SQLForeignKeys</A></STRONG><BR>
  260. <DD>
  261. <DT><STRONG><A NAME="item_SQLPrimaryKeys">SQLPrimaryKeys</A></STRONG><BR>
  262. <DD>
  263. <DT><STRONG><A NAME="item_SQLDataSources">SQLDataSources</A></STRONG><BR>
  264. <DD>
  265. All handled, currently (as of 0.21)
  266.  
  267. <PRE>
  268.  
  269. =item Others/todo?</PRE>
  270. <P>Level 1</P>
  271. <PRE>
  272.     SQLColumns  
  273.     SQLSpecialColumns
  274.     SQLTables (use tables()) call</PRE>
  275. <P>Level 2</P>
  276. <PRE>
  277.     SQLColumnPrivileges
  278.     SQLProcedureColumns
  279.     SQLProcedures
  280.     SQLTablePrivileges
  281.     SQLDrivers
  282.     SQLNativeSql</PRE>
  283. <P></P></DL>
  284. <P>
  285. <H2><A NAME="using dbd::odbc with web servers under win32.">Using DBD::ODBC with web servers under Win32.</A></H2>
  286. <DL>
  287. <DT><STRONG><A NAME="item_General_Commentary_re_web_database_access">General Commentary re web database access</A></STRONG><BR>
  288. <DD>
  289. This should be a DBI faq, actually, but this has somewhat of an
  290. Win32/ODBC twist to it.
  291. <P>Typically, the Web server is installed as an NT service or a Windows
  292. 95/98 service.  This typically means that the web server itself does
  293. not have the same environment and permissions the web developer does.
  294. This situation, of course, can and does apply to Unix web servers.
  295. Under Win32, however, the problems are usually slightly different.</P>
  296. <P></P>
  297. <DT><STRONG><A NAME="item_Defining_your_DSN_%2D%2D_which_type_should_I_use%3">Defining your DSN -- which type should I use?</A></STRONG><BR>
  298. <DD>
  299. Under Win32 take care to define your DSN as a system DSN, not as a user
  300. DSN.  The system DSN is a ``global'' one, while the user is local to a
  301. user.  Typically, as stated above, the web server is ``logged in'' as a
  302. different user than the web developer.  This helps cause the situation
  303. where someone asks why a script succeeds from the command line, but
  304. fails when called from the web server.
  305. <P></P>
  306. <DT><STRONG><A NAME="item_Defining_your_DSN_%2D%2D_careful_selection_of_the_">Defining your DSN -- careful selection of the file itself is important!</A></STRONG><BR>
  307. <DD>
  308. For file based drivers, rather than client server drivers, the file
  309. path is VERY important.  There are a few things to keep in mind.  This
  310. applies to, for example, MS Access databases.
  311. <P>1) If the file is on an NTFS partition, check to make sure that the Web
  312. <STRONG>service</STRONG> user has permissions to access that file.</P>
  313. <P>2) If the file is on a remote computer, check to make sure the Web
  314. <STRONG>service</STRONG> user has permissions to access the file.</P>
  315. <P>3) If the file is on a remote computer, try using a UNC path the file,
  316. rather than a X:\ notation.  This can be VERY important as services
  317. don't quite get the same access permissions to the mapped drive letters
  318. <STRONG>and</STRONG>, more importantly, the drive letters themselves are GLOBAL to
  319. the machine.  That means that if the service tries to access Z:, the Z:
  320. it gets can depend upon the user who is logged into the machine at the
  321. time.  (I've tested this while I was developing a service -- it's ugly
  322. and worth avoiding at all costs).</P>
  323. <P>Unfortunately, the Access ODBC driver that I have does not allow one to
  324. specify the UNC path, only the X:\ notation.  There is at least one way
  325. around that.  The simplest is probably to use Regedit and go to
  326. (assuming it's a system DSN, of course)
  327. HKEY_LOCAL_USERS\SOFTWARE\ODBC\``YOUR DSN'' You will see a few settings
  328. which are typically driver specific.  The important value to change for
  329. the Access driver, for example, is the DBQ value.  That's actually the
  330. file name of the Access database.</P>
  331. <P></P>
  332. <DT><STRONG>Connect without DSN
  333. The ability to connect without a full DSN is introduced in version 0.21.</STRONG><BR>
  334. <DD>
  335. Example (using MS Access):
  336.     my $DSN = 'driver=Microsoft Access Driver
  337. (*.mdb);dbq=\\\\cheese\\g$\\perltest.mdb';
  338.     my $dbh = DBI->connect(``dbi:ODBC:$DSN'', '','') 
  339.         or die ``$DBI::errstr\n'';
  340. <P>The above sample uses Microsoft's UNC naming convention to point to the MSAccess
  341. file (\\\\cheese\\g$\\perltest.mdb).  The dbq parameter tells the access driver
  342. which file to use for the database.
  343. </P>
  344. <PRE>
  345.  
  346. Example (using MSSQL Server):
  347.       my $DSN = 'driver={SQL Server};Server=server_name;
  348.       database=database_name;uid=user;pwd=password;';
  349.       my $dbh  = DBI->connect("dbi:ODBC:$DSN") or die "$DBI::errstr\n";</PRE>
  350. <P></P></DL>
  351. <P>
  352. <H2><A NAME="random links">Random Links</A></H2>
  353. <P>These are in need of sorting and annotating. Some are relevant only
  354. to ODBC developers (but I don't want to loose them).</P>
  355. <PRE>
  356.         <A HREF="http://www.ids.net/~bjepson/freeODBC/index.html">http://www.ids.net/~bjepson/freeODBC/index.html</A></PRE>
  357. <PRE>
  358.         <A HREF="http://dataramp.com/">http://dataramp.com/</A></PRE>
  359. <PRE>
  360.         <A HREF="http://www.openlink.co.uk">http://www.openlink.co.uk</A> 
  361.                 or
  362.         <A HREF="http://www.openlinksw.com">http://www.openlinksw.com</A></PRE>
  363. <PRE>
  364.         <A HREF="http://www.syware.com">http://www.syware.com</A></PRE>
  365. <PRE>
  366.         <A HREF="http://www.microsoft.com/odbc">http://www.microsoft.com/odbc</A></PRE>
  367. <P>
  368. <H2><A NAME="frequently asked questions answers to common dbi and dbd::odbc questions:">Frequently Asked Questions
  369. Answers to common DBI and DBD::ODBC questions:</A></H2>
  370. <DL>
  371. <DT><STRONG><A NAME="item_How_do_I_read_more_than_N_characters_from_a_Memo_%">How do I read more than N characters from a Memo | BLOB | LONG field?</A></STRONG><BR>
  372. <DD>
  373. See LongReadLen in the DBI docs.
  374. <P><TABLE CELLSPACING=0 CELLPADDING=0><TR><TD>Example:
  375. <TR><TD><TD>$dbh->{LongReadLen} = 20000;
  376. <TR><TD><TD>$sth = $dbh->prepare(``select long_col from big_table'');
  377. <TR><TD><TD>$sth->execute;
  378. <TR><TD><TD>etc</TABLE></P>
  379. <P></P>
  380. <DT><STRONG><A NAME="item_What_is_DBD%3A%3AODBC%3F_Why_can%27t_I_connect%3F_">What is DBD::ODBC?  Why can't I connect?  Do I need an ODBC driver?  What is the ODBC driver manager?</A></STRONG><BR>
  381. <DD>
  382. These, general questions lead to needing definitions.
  383. <P>1) ODBC Driver - the driver that the ODBC manager uses to connect
  384. and interact with the RDBMS.  You DEFINITELY need this to 
  385. connect to any database.  For Win32, they are plentiful and installed
  386. with many applications.  For Linux/Unix, some hunting is required, but
  387. you may find something useful at:</P>
  388. <PRE>
  389.         <A HREF="http://www.openlinksw.com">http://www.openlinksw.com</A>
  390.         <A HREF="http://www.intersolv.com">http://www.intersolv.com</A></PRE>
  391. <P>2) ODBC Driver Manager - the piece of software which interacts with the drivers
  392. for the application.  It ``hides'' some of the differences between the
  393. drivers (i.e. if a function call is not supported by a driver, it 'hides'
  394. that and informs the application that the call is not supported.
  395. DBD::ODBC needs this to talk to drivers.  Under Win32, it is built in
  396. to the OS.  Under Unix/Linux, in most cases, you will want to use freeODBC,
  397. unixODBC or iODBC.  iODBC is bundled with DBD::ODBC.</P>
  398. <P>3) DBD::ODBC.  DBD::ODBC uses the driver manager to talk to the ODBC <CODE>driver(s)</CODE> on
  399. your system.  You need both a driver manager and driver installed and tested
  400. before working with DBD::ODBC.  You need to have a DSN (see below) configured
  401. *and* TESTED before being able to test DBD::ODBC.</P>
  402. <P>4) DSN -- Data Source Name.  It's a way of referring to a particular database by any
  403. name you wish.  The name itself can be configured to hide the gory details of
  404. which type of driver you need and the connection information you need to provide.
  405. For example, for some databases, you need to provide a TCP address and port.
  406. You can configure the DSN to have use information when you refer to the DSN.</P>
  407. <P></P>
  408. <DT><STRONG><A NAME="item_Where_do_I_get_an_ODBC_driver_manager_for_Unix%2FL">Where do I get an ODBC driver manager for Unix/Linux?</A></STRONG><BR>
  409. <DD>
  410. DBD::ODBC comes with one (iODBC).  In the DBD::ODBC source release is a directory named iodbcsrc.  
  411. There are others.  UnixODBC, FreeODBC and some of the drivers will come with one of these managers.
  412. For example Openlink's drivers (see below) come with the iODBC driver manager.
  413. <P></P>
  414. <DT><STRONG><A NAME="item_How_do_I_access_a_MS_SQL_Server_database_from_Linu">How do I access a MS SQL Server database from Linux?</A></STRONG><BR>
  415. <DD>
  416. Try using drivers from <A HREF="http://www.openlinksw.com">http://www.openlinksw.com</A>
  417. The multi-tier drivers have been tested with Linux and Redhat 5.1.
  418. <P></P>
  419. <DT><STRONG><A NAME="item_How_do_I_access_an_MS%2DAccess_database_from_Linux">How do I access an MS-Access database from Linux?</A></STRONG><BR>
  420. <DD>
  421. I believe you can use the multi-tier drivers from <A HREF="http://www.openlinksw.com,">http://www.openlinksw.com,</A> however, I have
  422. not tested this.  Also, I believe there is a commercial solution from <A HREF="http://www.easysoft.com.">http://www.easysoft.com.</A>  I
  423. have not tested this.
  424. <P>If someone does have more information, please, please send it to me and I will put it in this
  425. FAQ.</P>
  426. <P></P>
  427. <DT><STRONG><A NAME="item_Almost_all_of_my_tests_for_DBD%3A%3AODBC_fail%2E_T">Almost all of my tests for DBD::ODBC fail.  They complain about not being able to connect
  428. or the DSN is not found.</A></STRONG><BR>
  429. <DD>
  430. Please, please test your configuration of ODBC and driver before trying to test DBD::ODBC.  Most
  431. of the time, this stems from the fact that the DSN (or ODBC) is not configured properly.  iODBC
  432. comes with a odbctest program.  Please use it to verify connectivity.
  433. <P></P>
  434. <DT><STRONG><A NAME="item_Windows">For Unix -> Windows DB see Tom Lowery's write-up.</A></STRONG><BR>
  435. <DD>
  436. <A HREF="http://tlowery.hypermart.net/perl_dbi_dbd_faq.html#HowDoIAccessMSWindowsDB">http://tlowery.hypermart.net/perl_dbi_dbd_faq.html#HowDoIAccessMSWindowsDB</A>
  437. <P></P>
  438. <DT><STRONG><A NAME="item_char">I'm attempting to bind a Long Var char (or other specific type) and the binding is not working.
  439. The code I'm using is below:</A></STRONG><BR>
  440. <DD>
  441. <PRE>
  442.         $sth->bind_param(1, $str, $DBI::SQL_LONGVARCHAR);
  443.                                  ^^^
  444. The problem is that DBI::SQL_LONGVARCHAR is not the same as $DBI::SQL_LONGVARCHAR and that
  445. $DBI::SQL_LONGVARCHAR is an error!</PRE>
  446. <P>It should be:</P>
  447. <PRE>
  448.         $sth->bind_param(1, $str, DBI::SQL_LONGVARCHAR);</PRE>
  449. </DL>
  450. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  451. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  452. <STRONG><P CLASS=block> DBD::ODBC - ODBC Driver for DBI</P></STRONG>
  453. </TD></TR>
  454. </TABLE>
  455.  
  456. </BODY>
  457.  
  458. </HTML>
  459.