免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1807 | 回复: 5
打印 上一主题 下一主题

PERL如何连接并访问MYSQL2000? [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-10-24 20:50 |只看该作者 |倒序浏览
代码如下:
sub update_data {

  
    my $DSN ='driver=(SQLServer);Server= zymh;database=zymh;uid= zymh;pwd= 1234';
   my $dbh =DBI->;connect("dbi:ODBCDSN" or die "$DBI::errstr\n";
   
    $sth =$dbh->;prepare(" UPDATE bbf SET(type=&mtype,time=$mtime,home=$mhome,result=$mresult,away =$maway,ht=$mht, status='$mstatus";
  $sth->;execute();

    $dbh =DBI ->;disconnect or die "$DBI::errstr\n";
     exit;
}

错语提示如下:
DBI connect("driver=(SQLServer);server=zymh;database =zymh;uid=zymh;pwd=1234',""....)failed:{Microsoft [ODBC 驱动程序 管理器] 示发现数据源名称并且未指定默认驱动程序(SQL-IM002)(dbdB_login/SQLConnect err=-1) at :e:\win006\secore\bfe.pl line 428

小生只想PERL连接MSSQL2000并更新数据库某个表. 小生英文不好, perldoc DBD::ODBC看得头昏昏.OS为 WIN2000 /PERL5.8 , 已在ODBC增加SQL2000的DSN.如何解决? 谢谢.

论坛徽章:
0
2 [报告]
发表于 2003-10-27 10:09 |只看该作者

PERL如何连接并访问MYSQL2000?

我觉得可能是参数问题;connect方法的格式是这样的:
$dbh = DBI->;connect($data_source, $username, $password);
$dbh = DBI->;connect($data_source, $username, $password, \%attr);
其中$data_source有如下几种形式:
dbiriverName:database_name
dbiriverName:database_name@hostname
dbiriverName:database_name~hostname!port  dbiriverName:database=database_name;host=hostname;port=port
一般ODBC用最后一种形式。而你仅用一个字符串作为参数与connect的参数列表相比似乎不妥。
建议这样作参数:
$data_source = 'dbi:ODBC:zymh';
$user_name = 'zymh';
$password = 'zymh';
然后再连接试试:
my $dbh = $DBI->;connect($data_source,$user_name,$password);

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
3 [报告]
发表于 2003-10-27 12:25 |只看该作者

PERL如何连接并访问MYSQL2000?

那我试试.

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
4 [报告]
发表于 2003-10-27 12:26 |只看该作者

PERL如何连接并访问MYSQL2000?

那我试试.

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
5 [报告]
发表于 2003-10-27 13:05 |只看该作者

PERL如何连接并访问MYSQL2000?

原帖由 "zhongmg108" 发表:
我觉得可能是参数问题;connect方法的格式是这样的:
$dbh = DBI->;connect($data_source, $username, $password);
$dbh = DBI->;connect($data_source, $username, $password, \%attr);
其中$data_source有?.........



还是不行,小生照你意思将代码改成:

#######################################################
####zymh 为数据库服务器名. testdb为数据库名 ###############
####win006为在ODBC系统数据源名            ################
#####$mtype,$mtime,$mhome,$mresult,$maway,$ht,$mstaus ##
######为用正则表达式已匹配出来的字段变量     ##############
########################################################
sub update_data {

        my($dbh,$sth);
                my $data_source = 'DBI:ODBC:win006;Server=zymh;database=testdb';
        my $user_name = 'zymh';
        my $password = '1234';

    #$DSN ='DBI:ODBC:win006;Server= zymh;database=testdb';

    $dbh =DBI->;connect('$data_source','$user_name','$password') or die "$DBI::errstr\n";
      
    $sth =$dbh->;prepare(" UPDATE bbf SET(type=&mtype,time=$mtime,home=$mhome,result=$mresult,away =$maway,ht=$mht, status='$mstatus";
$sth->;execute();
    $sth->;finish;
    $dbh =DBI ->;disconnect or die "$DBI::errstr\n";

   exit;

提示出错:can't connetct($data_source $user_name $password),no database driver specified and DBI_DSN env var not set at e:\win006\score \bfe.pl line 433

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
6 [报告]
发表于 2003-10-27 17:40 |只看该作者

PERL如何连接并访问MYSQL2000?

原帖由 "zymh_zy"]?绦?管理器 发表:
示发现数据源名称并且未指定默认驱动程序(SQL-IM002)(dbdB_login/SQLConnect err=-1) at :e:\win006\secore\bfe.pl line 428

小生只想PERL连接MSSQL2000并更新数据库某个表. 小生英文不好, perld..........



现在已能连上MSSQL,但无法更新数据表的纪录。程式运行到弹出:Connecting to database。。。。。ok!就停止不动。如何解决?谢谢。

代码如下#######################################################   
####zymh 为数据库服务器名. testdb为数据库名 ###########   
####win006为在ODBC系统数据源名         ################   
#####$mtype,$mtime,$mhome,$mresult,$maway,$ht,$mstaus #  
######为用正则表达式已匹配出来的字段变量 ##############   
#######################################################   

sub update_data {

#全局变量  
my ($conn,$Rs,$dataCmd);  
#连接数据库  
print "Connecting to database...   ";  
my $conn = Win32::OLE->;new('ADODB.Connection'); # creates a connection object  
$conn->;Open('testdb',"zymh","1234";   # opens the database connection  
my $RS = Win32::OLE->;new('ADODB.Recordset');    # creates a recordset object  
my $dataCmd = Win32::OLE->;new('ADODB.Command'); # creates a command object  
$dataCmd->;{ActiveConnection} = $conn;  
$dataCmd->;{CommandTimeout} = 0;  
print "OK!\n";  
#更新数据库信息  
#Updata the Comment of Database
$dataCmd->;{CommandText} ="UPDATE bbf SET(type=&mtype,time=$mtime,home=$mhome,result=$mresult,away =$maway,ht=$mht, status=$mstatus)";   
$dataCmd->;Execute;  
$dataCmd->;finish;
$dataCmd->;Close();

exit;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP