您的位置:建站学院首页 >> 文章 >> CGI技术
尝试用sql查询语句操纵普通文本数据库!使用简单的select就可以实现文本的索引访问,用update……

    ¬ify("不能找到数据库信息文件,数据库连接失败!",1) if (!(-e $dbname."_info".$main::txt));
    my @jtdb_info = &readtxtfile($dbname."_info".$main::txt);
        chomp(@jtdb_info);
    ¬ify("数据库信息文件已经损坏或丢失,连接数据库失败!",1) if ($jtdb_info[0] eq "");

    my @keys = split(/$main::split/,$jtdb_info[0]);
    my $key;
    foreach $key (@keys)
    {
        $key =~ s/^\s+//g;
        $key =~ s/\s+$//g;
     }
    return @keys;
}
#------------------------------------------------
sub db_save
{
    my ($jtdb,@toSave) = @_;

    my $dbname = $jtdb.$main::txt;
    my $just = $jtdb.".lock";

    while(-f $just)
    {select(undef,undef,undef,0.1);} #锁文件
    open(LOCKFILE,">$just");

    open (FD,">$dbname");
    my $line;
    foreach $line (@toSave)
    {
        foreach (@main::recordNames)
        {
            print FD $line->{$_}.$main::split;
         }
         print FD "\n";
     }
    close(FD);

    close(LOCKFILE);
    unlink($just);
    return (1);
}
#------------------------------------------------
sub executeStr
{
    my @sqlcmds;
    my $sqlcmd;

    grep{/\s*(\S+)\s+(.*)/ and $sqlcmd = lc($1);} @_;

    if ($sqlcmd eq "select")
    {
        grep{/\s*(SELECT)\s+(\S+\s*(\s*\,+?\s*\S+)*)\s+FROM\s+(\S+)((\s+WHERE\s+(.*)\s*)*)/i and $sqlcmd = lc($1);@sqlcmds = ($2,$4,$7);} @_;
        &sql_select(@sqlcmds);
     }
    elsif ($sqlcmd eq "insert")
    {
        grep{/\s*(INSERT)\s+INTO\s+(\S+)((\s+\((\s*\S+\s*(\s*\,+?\s*\S+)*\s*)+?\))*?)\s+VALUES\s*\((.*)\)\s*/i and $sqlcmd = lc($1);@sqlcmds = ($2,$5,$7);} @_;

本内容共9页  首 页  上一页  下一页  尾 页  当前在第2

Google
 
Web www.cqxw.net