⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbiodbc.pm

📁 SinFP是一种新的识别对方计算机操作系统类型的工具
💻 PM
字号:
package			# hide this package from CPAN indexer	Win32::ODBC;#use strict;use DBI;# once we've been loaded we don't want perl to load the real Win32::ODBC$INC{'Win32/ODBC.pm'} = $INC{'Win32/DBIODBC.pm'} || 1;#my $db = new Win32::ODBC("DSN=$self->{'DSN'};UID=$self->{'UID'};PWD=$self->{'PWD'};");#EMU --- my $db = new Win32::ODBC("DSN=$DSN;UID=$login;PWD=$password;");sub new{	shift;	my $connect_line= shift;# [R] self-hack to allow empty UID and PWD	my $temp_connect_line;	$connect_line=~/DSN=\w+/;	$temp_connect_line="$&;";	if ($connect_line=~/UID=\w?/)		{$temp_connect_line.="$&;";}	else	{$temp_connect_line.="UID=;";};	if ($connect_line=~/PWD=\w?/)		{$temp_connect_line.="$&;";}	else	{$temp_connect_line.="PWD=;";};	$connect_line=$temp_connect_line;# -[R]-		my $self= {};				$_=$connect_line; 	/^(DSN=)(.*)(;UID=)(.*)(;PWD=)(.*)(;)$/; 	#---- DBI CONNECTION VARIABLES 	$self->{ODBC_DSN}=$2; 	$self->{ODBC_UID}=$4; 	$self->{ODBC_PWD}=$6;			#---- DBI CONNECTION VARIABLES		$self->{DBI_DBNAME}=$self->{ODBC_DSN};	$self->{DBI_USER}=$self->{ODBC_UID};	$self->{DBI_PASSWORD}=$self->{ODBC_PWD};	$self->{DBI_DBD}='ODBC';        		#---- DBI CONNECTION	$self->{'DBI_DBH'}=DBI->connect($self->{'DBI_DBNAME'},			$self->{'DBI_USER'},$self->{'DBI_PASSWORD'},$self->{'DBI_DBD'});	warn "Error($DBI::err) : $DBI::errstr\n" if ! $self->{'DBI_DBH'};         	#---- RETURN 		bless $self;}#EMU --- $db->Sql('SELECT * FROM DUAL');sub Sql{ 	my $self= shift; 	my $SQL_statment=shift; #	print " SQL : $SQL_statment \n";		$self->{'DBI_SQL_STATMENT'}=$SQL_statment;		my $dbh=$self->{'DBI_DBH'}; #	print " DBH : $dbh \n";		my $sth=$dbh->prepare("$SQL_statment");	 #	print " STH : $sth \n";		$self->{'DBI_STH'}=$sth;		if ($sth)	{		$sth->execute();	}		#--- GET ERROR MESSAGES	$self->{DBI_ERR}=$DBI::err;	$self->{DBI_ERRSTR}=$DBI::errstr;	if ($sth)	{		#--- GET COLUMNS NAMES		$self->{'DBI_NAME'} = $sth->{NAME};	}# [R] provide compatibility with Win32::ODBC's way of identifying erraneous SQL statements 	return ($self->{'DBI_ERR'})?1:undef;# -[R]-} #EMU --- $db->FetchRow())sub FetchRow{  	my $self= shift; 	 	my $sth=$self->{'DBI_STH'}; 	if ($sth)	{	 	my @row=$sth->fetchrow_array;	 	$self->{'DBI_ROW'}=\@row;	 	if (scalar(@row)>0)	 	{			#-- the row of result is not nul			#-- return somthing nothing will be return else			return 1;	 	} 		}	return undef;} # [R] provide compatibility with Win32::ODBC's Data() method.sub Data{	my $self=shift;	my @array=@{$self->{'DBI_ROW'}};	foreach my $element (@array)	{		# remove padding of spaces by DBI		$element=~s/(\s*$)//;	};	return (wantarray())?@array:join('', @array);};# -[R]- #EMU --- %record = $db->DataHash;sub DataHash{  	my $self= shift; 	 	 	my $p_name=$self->{'DBI_NAME'}; 	my $p_row=$self->{'DBI_ROW'}; 	my @name=@$p_name; 	my @row=@$p_row; 	my %DataHash;#print @name; print "\n"; print @row;# [R] new code that seems to work consistent with Win32::ODBC	while (@name)	{		my $name=shift(@name);		my $value=shift(@row);		# remove padding of spaces by DBI		$name=~s/(\s*$)//;		$value=~s/(\s*$)//;		$DataHash{$name}=$value;	};# -[R]-# [R] old code that didn't appear to work#	foreach my $name (@name)#	{#		$name=~s/(^\s*)|(\s*$)//;#		my @arr=@$name;#		foreach (@arr)#		{#			print "lot $name  name  col $_   or ROW= 0 $row[0]  1 $row[1] 2 $row[2] \n ";#			$DataHash{$name}=shift(@row);#		}#	}# -[R]- 	#--- Return Hash 	return %DataHash; 	} #EMU --- $db->Error()sub Error{  	my $self= shift; 	 	 	if ($self->{'DBI_ERR'} ne '') 	{		#--- Return error message		$self->{'DBI_ERRSTR'}; 	} 	#-- else good no error message 	 	}# [R] provide compatibility with Win32::ODBC's Close() method.sub Close{	my $self=shift;	my $dbh=$self->{'DBI_DBH'};	$dbh->disconnect;}# -[R]-1;__END__# [R] to -[R]- indicate sections edited by me, Roy Lee=head1 NAMEWin32::DBIODBC - Win32::ODBC emulation layer for the DBI=head1 SYNOPSIS  use Win32::DBIODBC;     # instead of use Win32::ODBC=head1 DESCRIPTIONThis is a I<very> basic I<very> alpha quality Win32::ODBC emulationfor the DBI. To use it just replace	use Win32::ODBC;in your scripts with	use Win32::DBIODBC;or, while experimenting, you can pre-load this module without changing yourscripts by doing	perl -MWin32::DBIODBC your_script_name=head1 TO DOError handling is virtually non-existant.=head1 AUTHORTom Horen <tho@melexis.com>=cut

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -