您的位置:建站学院首页 >> 文章 >> CGI技术
¬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);} @_;
尝试用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);} @_;