Perl连接access数据库(免配ODBC)

Perl连接access数据库(免配ODBC)

Perl连接access数据库(免配ODBC)
 (此贴内容已隐藏,限有过发贴记录的注册用户查看, 但您没有在中国Perl协会 用户推广组发表过任何帖子,将不能浏览本贴内容)
测试可以用,但是本人还有一个问题,就是这个怎么操作数据库呢?以前操作不是用DBI的吗?现在没有加入这个,怎么操作,能详细讲解一下吗?
perl5.8 自带的文档有很多.
DBI的access实例我还没找到

perl5.8 自带的文档有很多示例,你去查一下,比如:


示例

my $sql="SELECT * FROM $tablename where boardid = $boardid;";

$db->Sql($sql) or Win32::ODBC::Error();

while ($db->FetchRow){

@data = $db->Data();

print @data;

}

}




   

[quote]my $DSN = "driver.
[quote]my $DSN = "driver=Microsoft Access Driver (*.mdb);dbq=D:/www/test/dv.mdb";
[/quote]
有没有ASP里的 server.mappath(/test/dv.mdb) 一样的函数呀?
#!/usr/bin/perl -w--us.
#!/usr/bin/perl -w
use strict;

print "Content-type:text/html;\n\n";

# $0: 当前正在执行的文件,如:D:\working\perl\test\Noname4.pl
(my $path = $0) =~ s![\\/][^\\/]+$!!;
print $path;

这样可以获得当前页面所在的文件夹路径,如:D:\working\perl\test
如果放置的文件夹不一样还需要处理一下




   

还是不如 server.mappath .
还是不如 server.mappath 方便呀。
你可以自己写个sub来处理,server.mappath也只是m$帮你做好的
如:
print &mappath('aaa.mdb');

sub mappath {
my $file = shift;
(my $path = $0) =~ s![\\/][^\\/]+$!!;
return "$path\\$file";
}
你还可以特别处理包含这种路径信息的,'../', './'
另一种连接Access方式--.
作者提供的相关的附件(大小:11 K)

另一种连接Access方式,用类似方式也可链接Sql Server 和其他支持ADO连接方式的

#!perl -w
use strict;
use Cwd qw/abs_path/;
use Win32::OLE;
use Win32::OLE::Variant;

print "Content-type:text/html;\n\n";

# 获取db.mdb的绝对路径
my $db = abs_path('db.mdb');
my $conn = Win32::OLE->new('ADODB.Connection');
eval {
$conn->Open('Provider=Microsoft.Jet.oledb.4.0; data source='.$db);
};
print $@ if $@;

my $rs = Win32::OLE->new('ADODB.Recordset');
eval {
$rs = $conn->Execute('select `id`, `name`, `content` from `t`');
};
print $@ if $@;

# 获取查询值
print '<br />', '-' x 20, '<br />';
# 在之前这个地方我弄错了,在附件里的相同地方也需要做相应修改
while (! $rs->EOF) {
print $rs->{'id'}->value, ' - ', $rs->{'name'}->value, ' - ', $rs->{'content'}->value, '<br />';
$rs->MoveNext;
}
print '-' x 20, '<br />';
$rs->Close();

# 执行新增,删除,更新操作
$conn->Execute("insert into `t` (`name`, `content`) values('".rand."', '".rand."')");
$conn->Execute("delete from `t` where `id` > 10");
$conn->Execute("update `t` set `name`='bbbb' where `id` = 10");

$conn->Close;




   

附:用Perl来实现Access压.
附:用Perl来实现Access压缩

#!perl -w
use strict;
use Win32::OLE;

print "Content-type:text/html;\n\n";

my $fso = Win32::OLE->new('Scripting.FileSystemObject');
my $engine = Win32::OLE->new('JRO.JetEngine');

my $db = 'db.mdb';
my $strDBPath = '';
$fso->CopyFile($db, 'temp.mdb');

$engine->CompactDatabase(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" . $strDBPath . "temp.mdb",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" . $strDBPath . "temp1.mdb"
);

$fso->CopyFile("temp1.mdb", $db);
$fso->DeleteFile("temp.mdb");
$fso->DeleteFile("temp1.mdb");

undef $fso;
undef $engine;

print 'finish';