/*
***本类只能在win平台的服务器上使用
*/
class access{
function access($dir){ //构析函数,调用.com建立数据源,链接数据库;参数为数据库文件路径
$this->db=new com("adodb.connection");
$this->db->open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath($dir));
}
function sql($sql){//参数为SQL查询语句
if(preg_match("/limit +([0-9]*),([0-9]*)/",$sql,$out)){//正则分析sql语句,提取limit参数,模拟MYSQL的分页
$limit1=$out[1];
$limit2=$out[2];
$sql=preg_replace("/limit +([0-9]*),([0-9]*)/","",$sql);
}
$rs=$this->db->execute($sql);
if(strpos($sql,"select")===false or strpos($sql,"select")>5){//非查询语句直接返回空值,防止错误提示出现
return "";
}
if($limit1==""){
$limit1=0;
}
if($limit2==""){//如果没有limit参数,设$limit2为总记录数
$limit2=1000000;
}
$rs->move($limit1);//记录指针移动到第$limit1条记录处
$i=0;
while(!$rs->eof and $i
foreach($rs->fields as $rss){
$rs_r[$rss->name]=$rss->value;
}
$rs_rr[]=$rs_r;
$rs->move(1);
$i++;
}
return $rs_rr;
}
function getlist($db,$p=""){//此函数用于将关联数组各元素处理成相关变量,第二个参数为变量名前缀,防止重名
foreach($db as $key=>$dba){
global ${$p.$key};
${$p.$key}=$dba;
}
}
function yasuo($dir){//压缩数据库函数,本函数用access::yasuo($dir);调用,$dir为数据库文件路径,调用次函数之前必须将所有当前数据库的连接中断!
$ya =new com("JRO.JetEngine");
$truedir=realpath($dir);
$dirname=dirname($truedir);
$prov="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
$ya->CompactDatabase($prov.$truedir,$prov.$dirname."/aatmp.mdb");//数据库所在目录必须有读写权限,否则会导致失败!
unlink($truedir);
rename($dirname."/aatmp.mdb",$truedir);
}
function add($file){//新建一个ACCESS数据库 参数$file为文件路径,必须为相对路径
$dir=dirname($_SERVER["SCRIPT_FILENAME"])."/".$file;
$db=new com("ADOX.Catalog");
$db->Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=$dir");
}
}
?>
//使用方法
include("access.class.php");
//access::add("my.mdb");//创建数据库
$db=new access("mybD.mdb");//连接数据库
$sql=<<
CREATE TABLE a (
id AUTOINCREMENT(1,1),
name varchar(10))
eot;
$db->sql($sql);//建表
$sql=<<
insert into `a` (`name`) values('wo ri');
eot;
$db->sql($sql);//插入数据
$db->sql("insert into `a` (`name`) values('靠');");
$sql="select * from show";
$rs=$db->sql($sql);//查询
?>