亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? odbc.pm

?? ARM上的如果你對(duì)底層感興趣
?? PM
?? 第 1 頁 / 共 2 頁
字號(hào):
package Win32::ODBC;

$VERSION = '0.03';

# Win32::ODBC.pm
#       +==========================================================+
#       |                                                          |
#       |                     ODBC.PM package                      |
#       |                     ---------------                      |
#       |                                                          |
#       | Copyright (c) 1996, 1997 Dave Roth. All rights reserved. |
#       |   This program is free software; you can redistribute    |
#       | it and/or modify it under the same terms as Perl itself. |
#       |                                                          |
#       +==========================================================+
#
#
#         based on original code by Dan DeMaggio (dmag@umich.edu)
#
#	Use under GNU General Public License or Larry Wall's "Artistic License"
#
#	Check the README.TXT file that comes with this package for details about
#	it's history.
#

require Exporter;
require DynaLoader;

$ODBCPackage = "Win32::ODBC";
$ODBCPackage::Version = 970208;
$::ODBC = $ODBCPackage;
$CacheConnection = 0;

    #   Reserve ODBC in the main namespace for US!
*ODBC::=\%Win32::ODBC::;


@ISA= qw( Exporter DynaLoader );
    # Items to export into callers namespace by default. Note: do not export
    # names by default without a very good reason. Use EXPORT_OK instead.
    # Do not simply export all your public functions/methods/constants.
@EXPORT = qw(
            ODBC_ADD_DSN
            ODBC_REMOVE_DSN
            ODBC_CONFIG_DSN

            SQL_DONT_CLOSE
            SQL_DROP
            SQL_CLOSE
            SQL_UNBIND
            SQL_RESET_PARAMS

            SQL_FETCH_NEXT
            SQL_FETCH_FIRST
            SQL_FETCH_LAST
            SQL_FETCH_PRIOR
            SQL_FETCH_ABSOLUTE
            SQL_FETCH_RELATIVE
            SQL_FETCH_BOOKMARK

            SQL_COLUMN_COUNT
            SQL_COLUMN_NAME
            SQL_COLUMN_TYPE
            SQL_COLUMN_LENGTH
            SQL_COLUMN_PRECISION
            SQL_COLUMN_SCALE
            SQL_COLUMN_DISPLAY_SIZE
            SQL_COLUMN_NULLABLE
            SQL_COLUMN_UNSIGNED
            SQL_COLUMN_MONEY
            SQL_COLUMN_UPDATABLE
            SQL_COLUMN_AUTO_INCREMENT
            SQL_COLUMN_CASE_SENSITIVE
            SQL_COLUMN_SEARCHABLE
            SQL_COLUMN_TYPE_NAME
            SQL_COLUMN_TABLE_NAME
            SQL_COLUMN_OWNER_NAME
            SQL_COLUMN_QUALIFIER_NAME
            SQL_COLUMN_LABEL
            SQL_COLATT_OPT_MAX
            SQL_COLUMN_DRIVER_START
            SQL_COLATT_OPT_MIN
            SQL_ATTR_READONLY
            SQL_ATTR_WRITE
            SQL_ATTR_READWRITE_UNKNOWN
            SQL_UNSEARCHABLE
            SQL_LIKE_ONLY
            SQL_ALL_EXCEPT_LIKE
            SQL_SEARCHABLE
        );
    #The above are included for backward compatibility


sub new
{
    my ($n, $self);
    my ($type) = shift;
    my ($DSN) = shift;
    my (@Results) = @_;

    if (ref $DSN){
        @Results = ODBCClone($DSN->{'connection'});
    }else{
        @Results = ODBCConnect($DSN, @Results);
    }
    @Results = processError(-1, @Results);
    if (! scalar(@Results)){
        return undef;
    }
    $self = bless {};
    $self->{'connection'} = $Results[0];
    $ErrConn = $Results[0];
    $ErrText = $Results[1];
    $ErrNum = 0;
    $self->{'DSN'} = $DSN;
    $self;
}

####
#   Close this ODBC session (or all sessions)
####
sub Close
{
    my ($self, $Result) = shift;
    $Result = DESTROY($self);
    $self->{'connection'} = -1;
    return $Result;
}

####
#   Auto-Kill an instance of this module
####
sub DESTROY
{
    my ($self) = shift;
    my (@Results) = (0);
    if($self->{'connection'} > -1){
        @Results = ODBCDisconnect($self->{'connection'});
        @Results = processError($self, @Results);
        if ($Results[0]){
            undef $self->{'DSN'};
            undef @{$self->{'fnames'}};
            undef %{$self->{'field'}};
            undef %{$self->{'connection'}};
        }
    }
    return $Results[0];
}


sub sql{
    return (Sql(@_));
}

####
#   Submit an SQL Execute statement for processing
####
sub Sql{
    my ($self, $Sql, @Results) = @_;
    @Results = ODBCExecute($self->{'connection'}, $Sql);
    return updateResults($self, @Results);
}

####
#   Retrieve data from a particular field
####
sub Data{

        #   Change by JOC 06-APR-96
        #   Altered by Dave Roth <dave@roth.net> 96.05.07
    my($self) = shift;
    my(@Fields) = @_;
    my(@Results, $Results, $Field);

    if ($self->{'Dirty'}){
        GetData($self);
        $self->{'Dirty'} = 0;
    }
    @Fields = @{$self->{'fnames'}} if (! scalar(@Fields));
    foreach $Field (@Fields) {
        if (wantarray) {
            push(@Results, data($self, $Field));
        } else {
            $Results .= data($self, $Field);
        }
    }
    return wantarray ? @Results : $Results;
}

sub DataHash{
    my($self, @Results) = @_;
    my(%Results, $Element);

    if ($self->{'Dirty'}){
        GetData($self);
        $self->{'Dirty'} = 0;
    }
    @Results = @{$self->{'fnames'}} if (! scalar(@Results));
    foreach $Element (@Results) {
        $Results{$Element} = data($self, $Element);
    }

    return %Results;
}

####
#   Retrieve data from the data buffer
####
sub data
{  $_[0]->{'data'}->{$_[1]}; }


sub fetchrow{
    return (FetchRow(@_));
}
####
#   Put a row from an ODBC data set into data buffer
####
sub FetchRow{
    my ($self, @Results) = @_;
    my ($item, $num, $sqlcode);
        # Added by JOC 06-APR-96
        #   $num = 0;
    $num = 0;
    undef $self->{'data'};


    @Results = ODBCFetch($self->{'connection'}, @Results);
    if (! (@Results = processError($self, @Results))){
        ####
        #   There should be an innocuous error "No records remain"
        #   This indicates no more records in the dataset
        ####
        return undef;
    }
        #   Set the Dirty bit so we will go and extract data via the
        #   ODBCGetData function. Otherwise use the cache.
    $self->{'Dirty'} = 1;

        #   Return the array of field Results.
    return @Results;
}

sub GetData{
    my($self) = @_;
    my(@Results, $num);

    @Results = ODBCGetData($self->{'connection'});
    if (!(@Results = processError($self, @Results))){
        return undef;
    }
        ####
        #   This is a special case. Do not call processResults
        ####
    ClearError();
    foreach (@Results){
        s/ +$//; # HACK
        $self->{'data'}->{ ${$self->{'fnames'}}[$num] } = $_;
        $num++;
    }
        #   return is a hack to interface with a assoc array.
    return wantarray? (1, 1): 1;
}

####
#   See if any more ODBC Results Sets
#		Added by Brian Dunfordshore <Brian_Dunfordshore@bridge.com> 
#		96.07.10
####
sub MoreResults{
    my ($self) = @_;

    my(@Results) = ODBCMoreResults($self->{'connection'});
    return (processError($self, @Results))[0];
}

####
#   Retrieve the catalog from the current DSN
#	NOTE: All Field names are uppercase!!!
####
sub Catalog{
    my ($self) = shift;
    my ($Qualifier, $Owner, $Name, $Type) = @_;
    my (@Results) = ODBCTableList($self->{'connection'}, $Qualifier, $Owner, $Name, $Type);

        #   If there was an error return 0 else 1
    return (updateResults($self, @Results) != 1);
}

####
#   Return an array of names from the catalog for the current DSN
#       TableList($Qualifier, $Owner, $Name, $Type)
#           Return: (array of names of tables)
#	NOTE: All Field names are uppercase!!!
####
sub TableList{
    my ($self) = shift;
    my (@Results) = @_;
    if (! scalar(@Results)){
        @Results = ("", "", "%", "TABLE");
    }

    if (! Catalog($self, @Results)){
        return undef;
    }
    undef @Results;
    while (FetchRow($self)){
        push(@Results, Data($self, "TABLE_NAME"));
    }
    return sort(@Results);
}


sub fieldnames{
    return (FieldNames(@_));
}
####
#   Return an array of fieldnames extracted from the current dataset
####
sub FieldNames { $self = shift; return @{$self->{'fnames'}}; }


####
#   Closes this connection. This is used mostly for testing. You should
#   probably use Close().
####
sub ShutDown{
    my($self) = @_;
    print "\nClosing connection $self->{'connection'}...";
    $self->Close();
    print "\nDone\n";
}

####
#   Return this connection number
####
sub Connection{
    my($self) = @_;
    return $self->{'connection'};
}

####
#   Returns the current connections that are in use.
####
sub GetConnections{
    return ODBCGetConnections();
}

####
#   Set the Max Buffer Size for this connection. This determines just how much
#   ram can be allocated when a fetch() is performed that requires a HUGE amount
#   of memory. The default max is 10k and the absolute max is 100k.
#   This will probably never be used but I put it in because I noticed a fetch()
#   of a MEMO field in an Access table was something like 4Gig. Maybe I did
#   something wrong, but after checking several times I decided to impliment
#   this limit thingie.
####
sub SetMaxBufSize{
    my($self, $Size) = @_;
    my(@Results) = ODBCSetMaxBufSize($self->{'connection'}, $Size);
    return (processError($self, @Results))[0];
}

####
#   Returns the Max Buffer Size for this connection. See SetMaxBufSize().
####
sub GetMaxBufSize{
    my($self) = @_;
    my(@Results) = ODBCGetMaxBufSize($self->{'connection'});
    return (processError($self, @Results))[0];
}


####
#   Returns the DSN for this connection as an associative array.
####
sub GetDSN{
    my($self, $DSN) = @_;
    if(! ref($self)){
        $DSN = $self;
        $self = 0;
    }
    if (! $DSN){
        $self = $self->{'connection'};
	}
    my(@Results) = ODBCGetDSN($self, $DSN);
    return (processError($self, @Results));
}

####
#   Returns an associative array of $XXX{'DSN'}=Description
####
sub DataSources{
    my($self, $DSN) = @_;
    if(! ref $self){
        $DSN = $self;
        $self = 0;
    }
    my(@Results) = ODBCDataSources($DSN);
    return (processError($self, @Results));
}

####
#   Returns an associative array of $XXX{'Driver Name'}=Driver Attributes
####
sub Drivers{
    my($self) = @_;
    if(! ref $self){
        $self = 0;
    }
    my(@Results) = ODBCDrivers();
    return (processError($self, @Results));
}

####
#   Returns the number of Rows that were affected by the previous SQL command.
####
sub RowCount{
    my($self, $Connection) = @_;
    if (! ref($self)){
        $Connection = $self;
        $self = 0;
    }
    if (! $Connection){$Connection = $self->{'connection'};}
    my(@Results) = ODBCRowCount($Connection);
    return (processError($self, @Results))[0];
}

####
#   Returns the Statement Close Type -- how does ODBC Close a statment.
#       Types:
#           SQL_DROP
#           SQL_CLOSE
#           SQL_UNBIND
#           SQL_RESET_PARAMS
####
sub GetStmtCloseType{
    my($self, $Connection) = @_;
    if (! ref($self)){
        $Connection = $self;
        $self = 0;
    }
    if (! $Connection){$Connection = $self->{'connection'};}
    my(@Results) = ODBCGetStmtCloseType($Connection);
    return (processError($self, @Results));
}

####
#   Sets the Statement Close Type -- how does ODBC Close a statment.
#       Types:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合色婷婷| 成人欧美一区二区三区| 成人高清免费观看| 午夜视频一区二区| 中文字幕制服丝袜成人av| 欧美区一区二区三区| 岛国精品在线播放| 男人的j进女人的j一区| 日韩伦理av电影| 久久综合九色综合欧美98| 欧美色综合天天久久综合精品| 成人黄动漫网站免费app| 美国欧美日韩国产在线播放| 亚洲欧美成人一区二区三区| 中文天堂在线一区| 精品成人免费观看| 日韩三级在线免费观看| 欧美性videosxxxxx| www.亚洲色图| 国产成人夜色高潮福利影视| 毛片一区二区三区| 亚洲成a人片综合在线| 综合网在线视频| 欧美激情在线观看视频免费| 精品福利在线导航| 日韩欧美国产一区二区在线播放| 色天使久久综合网天天| 不卡的电影网站| 丁香啪啪综合成人亚洲小说 | 久久久久久亚洲综合影院红桃 | 99久久er热在这里只有精品15| 精品亚洲国内自在自线福利| 视频一区视频二区中文| 亚洲国产精品一区二区久久恐怖片| 成人欧美一区二区三区小说| 欧美国产日韩一二三区| 久久精品人人爽人人爽| 久久综合成人精品亚洲另类欧美 | 中文字幕一区二区在线播放| 国产欧美精品一区aⅴ影院| 精品国产乱码久久久久久浪潮| 欧美精品99久久久**| 91精品欧美综合在线观看最新| 欧美性猛交xxxxxx富婆| 欧美日韩一区在线| 欧美猛男gaygay网站| 欧美猛男gaygay网站| 欧美高清视频一二三区| 欧美一区二区大片| www国产成人| 久久一日本道色综合| 国产精品私房写真福利视频| 国产精品午夜电影| 亚洲精品日产精品乱码不卡| 香港成人在线视频| 免费精品视频最新在线| 韩国精品久久久| 不卡影院免费观看| 欧美综合一区二区| 欧美日韩国产片| 欧美成人一区二区三区在线观看| 久久在线观看免费| 中文字幕一区在线观看| 夜色激情一区二区| 麻豆国产精品777777在线| 国产一区 二区| 99精品视频一区二区三区| 色94色欧美sute亚洲13| 91精品国产综合久久蜜臀| www一区二区| 亚洲欧美日韩久久| 蜜臀av性久久久久蜜臀aⅴ流畅 | 激情综合色丁香一区二区| 国产99久久久国产精品| 91激情在线视频| 日韩片之四级片| 国产精品三级av| 午夜久久久久久久久久一区二区| 国内成人自拍视频| 91美女在线看| 91精品国产丝袜白色高跟鞋| 欧美国产日本视频| 亚洲成人午夜影院| 国产福利精品导航| 欧美日韩中文一区| 久久蜜桃av一区精品变态类天堂| 亚洲人成伊人成综合网小说| 轻轻草成人在线| 99精品国产一区二区三区不卡| 91精选在线观看| 亚洲欧美怡红院| 久久精品国产网站| 色就色 综合激情| 欧美videos中文字幕| 一区二区三区在线播放| 国产一区二三区| 欧美色倩网站大全免费| 国产精品系列在线| 久久福利资源站| 日本高清不卡在线观看| 国产日韩成人精品| 蜜桃视频第一区免费观看| 色婷婷综合久久久中文一区二区| 久久久综合视频| 视频一区二区三区在线| 91色乱码一区二区三区| 久久一区二区三区国产精品| 日韩—二三区免费观看av| 色噜噜夜夜夜综合网| 亚洲国产精品高清| 国内成人自拍视频| 日韩一区二区三区免费看| 亚洲综合激情网| 91在线高清观看| 国产色综合久久| 国产麻豆91精品| 91精品在线观看入口| 亚洲高清三级视频| 色婷婷av久久久久久久| 国产精品久久久久9999吃药| 国产精品66部| 精品少妇一区二区三区日产乱码| 午夜精品在线看| 欧美性一二三区| 亚洲人一二三区| 91丨九色丨国产丨porny| 国产精品丝袜一区| 国产精品自拍三区| 久久久久99精品国产片| 国内成人自拍视频| 久久一留热品黄| 国产高清不卡一区二区| 久久久久国产精品人| 国产91精品免费| 欧美国产精品久久| 成人午夜激情片| 国产精品成人午夜| 色婷婷精品大在线视频| 一个色妞综合视频在线观看| 91成人网在线| 亚洲一级二级三级| 欧美另类一区二区三区| 偷拍日韩校园综合在线| 在线不卡a资源高清| 日韩av成人高清| 精品国精品国产尤物美女| 国产精品一色哟哟哟| 国产欧美日韩在线视频| 成人网在线免费视频| 成人欧美一区二区三区视频网页| 色哟哟精品一区| 午夜精品久久久久影视| 日韩一区二区三区精品视频| 激情成人午夜视频| 国产精品毛片久久久久久| 日本精品视频一区二区| 视频一区二区欧美| 久久精品一区二区三区不卡| 国产成人在线网站| 亚洲视频小说图片| 91麻豆精品国产91久久久| 国产中文字幕精品| 中文字幕亚洲视频| 在线播放欧美女士性生活| 国产一区日韩二区欧美三区| 亚洲欧洲日韩综合一区二区| 欧美日韩国产综合久久| 激情六月婷婷综合| 亚洲精选免费视频| 精品少妇一区二区三区在线播放| 成人免费精品视频| 五月天中文字幕一区二区| 久久精品视频免费| 欧美性生活一区| 韩国三级电影一区二区| 亚洲人午夜精品天堂一二香蕉| 8v天堂国产在线一区二区| 国产福利一区在线观看| 亚洲成人你懂的| 亚洲国产精品成人综合| 欧美精品少妇一区二区三区| 大尺度一区二区| 亚洲福利视频三区| 中文字幕欧美区| 欧美久久一二区| 成人免费黄色在线| 日本美女一区二区三区| 一区在线播放视频| 日韩欧美一级在线播放| youjizz国产精品| 久久国产尿小便嘘嘘| 亚洲一区在线观看网站| 国产亚洲污的网站| 欧美精品乱码久久久久久| 福利91精品一区二区三区| 日韩高清在线观看| 樱桃国产成人精品视频| 日本一区二区免费在线| 欧美一区日韩一区| 色婷婷av一区|