The following example works for me. Applicable versions are shown inline:
use strict;
use warnings;
use DBI;
#MS Access 2003
#DBI->installed_versions;
# Perl : 5.008008 (MSWin32-x86-multi-thread)
# OS : MSWin32 (5.0)
# DBI : 1.59
# DBD::ODBC : 1.13
# Connect to the db
my $dbpathfile = 'C:\testdb.mdb';
my $db_driver = 'Microsoft Access Driver (*.mdb)';
my $dsn = "DBI:ODBC:DRIVER=$db_driver;DBQ=$dbpathfile";
my $dbh = DBI->connect( $dsn, '', '', { RaiseError => 1, AutoCommit =>
+ 1 } )
or die $DBI::errstr;
# Create table for test data
my $tblname = 'test_table';
my $tbl_sql = join( ' ', 'CREATE TABLE', $tblname,
'(ID AUTOINCREMENT, field1 TEXT,',
'CONSTRAINT', $tblname . '_pk', 'PRIMARY KEY
+(ID))' );
$dbh->do( $tbl_sql );
# Insert test data
my $insert_sql = join( ' ', 'INSERT INTO', $tblname, '( field1 ) VALUE
+S ( ? )' );
my $sth = $dbh->prepare( $insert_sql );
$sth->execute( 'test data' );
# Use @@IDENTITY to get the last insert ID
# See http://support.microsoft.com/kb/815629
my $id_sql = 'SELECT @@IDENTITY';
$sth = $dbh->prepare( $id_sql );
$sth->execute;
my $id = $sth->fetchrow_array;
print "Last insert ID is: $id\n";
Thanks to james2vegas and his post for seeding this approach. Thanks also to mje for considering adding this example to the docs for DBD::ODBC.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.