Hello, I'm trying to insert image data into an OLE field in MS Access database without success. I treat the image as a long binary field so if a 10k jpeg file is inserted, it remains at 10k in the database... not the bloated several hundred k or more that doing an 'insert object' produces within Access. Eventually, these images are to be served from the database to support a web site. Since the database is replicated, the image data needs to be in the database and not filenames pointing to where the images may be in the directory structure.
I'm following the DBI code in the Cheetah book p. 153 and have substituted the various type parameters (p. 147) including all the SQL_BINARY, SQL_VARBINARY and SQL_LONGVARBINARY constants. If in the code below, I remove from the SQL the Image field and its placeholder / bind, the query works. Any pointers would be appreciated. -Jim Perl build 629, DBI::ADO 2.4, MDAC 2.6, Access 2000, WinXP #!c:/perl/bin/perl.exe -w use DBI; open(FILE,'C:\temp\test.jpg'); # 5K test file so buffers / truncating should not be an issue undef $/; $imagedata = <FILE>; close(FILE); $dbh = DBI->connect("dbi:ADO:mydatabase", "user", "password") or die "Database connection not made: $DBI::errstr"; $sth = $dbh->prepare( "INSERT INTO images (Product_ID, Image, Title) VALUES (1012334844, ? , 'New Title')" ); $sth->bind_param( 1, $imagedata, SQL_BINARY ); $sth->execute(); $sth->finish; $dbh->disconnect; D:\Webroot\cgi-bin>perl saveimage.cgi DBD::ADO::st execute failed: Can't execute statement 'INSERT INTO images (Image) VALUES ( ? )': Lasterror: -2147217887: OLE exception from "Microsoft OLE DB Provider for ODBC Drivers": [Microsoft][ODBC Microsoft Access Driver]Invalid precision value Win32::OLE(0.1501) error 0x80040e21 in METHOD/PROPERTYGET "Open" Description: [Microsoft][ODBC Microsoft Access Driver]Invalid precisi on value HelpContext: 0 HelpFile: NativeError: 98 Number: -2147217887 Source: Microsoft OLE DB Provider for ODBC Drivers SQLState: S1104 at saveimage.cgi line 13.