簡體   English   中英

如何使用Perl連接到MS Access數據庫?

[英]How do I connect to an MS Access database using Perl?

我在本地計算機上有一個.accdb文件,我正在嘗試連接它並從數據庫中的3個表中讀取一些數據。 如何使用Perl建立連接?

到目前為止,我已經為MS Access拼湊了這么多,但我收到錯誤,說我沒有使用正確的驅動程序。 有任何想法嗎?

my $msaccess_dbh = DBI->connect(
    'dbi:ODBC:driver=microsoft access driver (*.accdb);' .
    'dbq=C:\path\to\database\databasefile.accdb'
);

謝謝!

編輯:只是為了澄清,我在這里沒有真正的要求。 我只需要從這個MS Access DB中做2或3個選擇,然后我將完成它。 所以任何有關連接和選擇的幫助都會很棒。 再次感謝。

根據您的連接字符串,它看起來像是(a)在Win32上,(b)連接到本地計算機上的數據庫。 如果我是正確的,當你可以直接連接Jet時,為什么還要煩擾ODBC呢? 參考下文:

#!/usr/bin/perl
use strict;use warnings;

use Win32::OLE;

my $DBFile  = qw( X:\Path\To\Your\Database.mdb ); # 
#Choose appropriate version of Jet for your system
my $Jet = Win32::OLE->CreateObject('DAO.DBEngine.36')   or die "Can't create Jet database engine.";
my  $DB = $Jet->OpenDatabase( $DBFile );

my $SQLquery = "DELETE * FROM Test_Table";
$DB->Execute($SQLquery, 128); #128=DBFailOnError

我猜測驅動程序與DSN的驅動程序不匹配,或者導致問題的另一個原因是,如果您將64位Perl與32位ODBC驅動程序混合使用,或者將32位Perl與64位混合使用位驅動程序。 真正的問題是錯誤信息,它非常模糊 - 您認為他們可能會告訴您數據源或驅動程序是否是問題? 在一個完美的世界......

無論如何,如果您的DSN正確,並且您的Perl和ODBC驅動程序位於相同的位族中,那么您嘗試的方法可以正常工作。

DSN中的驅動程序引用必須與管理工具 > 數據源(ODBC) > 驅動程序選項卡下列出的內容完全匹配。 我被列為Microsoft Access驅動程序( .mdb, .accdb),因此與您所擁有的略有不同。 在Perl中,連接線是:

my $dbh = DBI->connect('dbi:ODBC:driver=Microsoft Access Driver (*.mdb, *.accdb);dbq=X:\Path\To\Your\Database.mdb')

有關在Windows 7上使用Perl進行MS Access的更多信息,請訪問此處

你需要連接字符串

我過去成功地使用了那種格式的連接字符串,但那是舊的* .mdb格式。 您的ODBC驅動程序可能不支持Access 2007中較新的* .accdb格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM