PHP使用PDO连接SQLITE3


之前从网上看可以通过直接的方法对 sqlite 数据库进行操作。但好像只是支持 sqlite2. sqlite3 不支持。于是又看了看原来要使用 PDO 进行连接。
讲自己写的一个封装的代码放出来。
需要注意的就是ROOT是项目的绝对路径。$module之类的参数根据实际情况需要。
DT_URL是失败后的一个跳转url
因为sqlite在连接失败后发现自动创建一个空文件。所以在connect_sqlite方法中直接判断若此文件不存在则不进行库连接操作。
======================================================================================
<?php
/**
 * 此类只兼容sqlite3
 * @authorhanxiaoyue
 */
class db_sqlite {
    //打开sqlite数据库
    functionconnect_sqlite($dbname,$module) {
        $conn =null;
       if(file_exists(ROOT.'/db/'.$module.'/'.$dbname)) {
           $dbPath = 'sqlite:'.ROOT.'/db/'.$module.'/'.$dbname;
            try{
               $conn = new PDO($dbPath);
               $conn->beginTransaction();
            }catch(PDOException $e) {
                echo 'Exception is:'.$e->getMessage();
            }
           return $conn;          
        } else {
           exit(header('location:'.DT_URL));
        }
    }
    //打开datafarm链接
    functionconnect_datafarm_sqlite($dbname) {
        $conn =null;
       if(file_exists(ROOT.'/data/datafarm/'.$dbname)) {
           $dbPath = 'sqlite:'.ROOT.'/data/datafarm/'.$dbname;
            try{
               $conn = new PDO($dbPath);
               $conn->beginTransaction();
            }catch(PDOException $e) {
               echo 'Exception is:'.$e->getMessage();
           }  
           return $conn;      
        } else {
           exit(header('location:'.DT_URL));
        }  
    }  
    //查询操作
    functionquery_sqlite($conn,$sql) {
        $result= array();
        try {
            $sth= $conn->prepare($sql);
           $sth->execute();
            //获取结果
           $result = $sth->fetchAll();          
        }catch(PDOException $e) {
            echo'Exception is:'.$e->getMessage();
        }
        return$result;
    }
    //查询总记录数
    functionquery_count($conn,$sql) {
        $result= 0;
        try {
            $sth= $conn->prepare($sql);
           $sth->execute();
            //获取结果
          
            $vec= $sth->fetchAll();
          
           $result = $vec[0]['c'];
          
        }catch(PDOException $e) {
            echo'Exception is:'.$e->getMessage();
        }
        return$result;
    }
   //add,update,delete执行操作
    functionexec_sqlite($conn,$sql) {
        $count =0;
        try {
          
           $count = $conn->exec($sql);      
        }catch(PDOException $e) {
           $conn->rollBack();
            echo'Exception is:'.$e->getMessage();
        }
        return$count;
    }
    /**
     * 提交事务。针对执行exec_sqlite
     */
    functioncommit_sqlite($conn) {
       $conn->commit();
    }
    //关闭连接
    functionclose_sqlite($conn) {
       $conn=null;
    }
}
?>


原文:  http://wenku.baidu.com/link?url=gyhTdLD-AkyT14vBoa5QdrJkc9Ue9GR_FuoSsfZSGfnIjxujkY-Z070SofWcfgAMnjFvAZjq25IxYRl41DBG06YEx-C_Pnn8IZOrwo7jDjy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值