perl 之于ODBC 又或者ADO?

来源:互联网 发布:数据选项卡的分级显示 编辑:程序博客网 时间:2024/04/30 02:08

 

对于Perl连接数据库而言,事情有了进展。有一个好消息,一个坏消息。好消息是ODBC连接测试通过,(才发现代码网上大把);坏消息是ADO依旧用不了....无论官方的Demo还是江湖上的偏方。这样的话,移植性还是有问题但是顾不得了。其实对于ADO而言Perl还有DBI包,但是昨儿个硬是用不了。。。

 

#ODBC的连接方式在于移植性不好每次新建数据库得配制本地数据源
# Display a table in a database using PERL ODBC module

use Win32::ODBC;

$dsn = "testDB";
$DBase = "F://pl//testDB.mdb";
$table = "DATASTORE";

# ====== Check if the database can be opened correctly
if (!($db = new Win32::ODBC($dsn))) {
 print "Error in opening DSN /"$dsn/"!/n";
 print "Error: " . Win32::ODBC::Error(). "/n";
 exit;
}

# ====== Select all fields from the given table
$sql = "select * from $table;";
#$sql = "select * from $table order by Category;";

# ====== Check if the SQL query is correct
if ($db->Sql($sql)) {
 print "Error in SQL query: /"$sql/"!/n";
 print "Error: " . $db->Error() . "/n";
 $db->Close();
 exit;
}

# ====== Print field data
print "Content-type: text/html/n/n";
print "<html><body><pre>/n";
$count = 1;
@FieldNames = $db->FieldNames();
while ($db->FetchRow()) {
 print "Record $count/n";
# ($HASHCODE, $URL) = $db->Data("HASHCODE", "URL");
# undef %Data;
 %Data = $db->DataHash();
 foreach $x (@FieldNames) {
  print "$x: $Data{$x}/n";
 }
 print "/n";
 $count++;
}

$sqlinsert = "INSERT INTO DATASTORE VALUES (2, '458473957345', 'www.google.com', '021-345689')";
#更新记录
#$sqlupdate = "UPDATE address SET age = age+10 ";
#删除记录
#$sqldelete = "DELETE FROM address WHERE name='jimtyan'";

$rc = $db->Sql($sqlinsert);
die qq(SQL 失败 "$sqlinsert": ), $db->Error(), qq(n) if $rc;

#$rc = $db->Sql($sqlupdate);
#die qq(SQL 失败 "$sqlupdate": ), $db->Error(), qq(n) if $rc;

#$rc = $db->Sql($sqldelete);
#die qq(SQL 失败 "$sqldelete": ), $db->Error(), qq(n) if $rc;

#关闭链接
$db->Close();
print "</pre></body></html>/n";