分享

PHP使用PDO连接SQLITE3

 跃来跃去 2010-04-02
之前从网上看可以通过直接的方法对sqlite数据库进行操作。但好像只是支持sqlite2.对sqlite3不支持。于是又看了看原来要使用PDO进行连接。
讲自己写的一个封装的代码放出来。
需要注意的就是ROOT是项目的绝对路径。$module之类的参数根据实际情况需要。
DT_URL是失败后的一个跳转url。
因为sqlite在连接失败后发现自动创建一个空文件。所以在connect_sqlite方法中直接判断若此文件不存在则不进行库连接操作。
======================================================================================
<?php

/**
 * 此类只兼容sqlite3
 * @author hanxiaoyue
 */
class db_sqlite {
    //打开sqlite数据库
    function connect_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链接
    function connect_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));
        }   
    }   
    //查询操作
    function query_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;
    }
    //查询总记录数
    function query_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执行操作
    function exec_sqlite($conn,$sql) {
        $count = 0;
        try {
           
            $count = $conn->exec($sql);       
        } catch(PDOException $e) {
            $conn->rollBack();
            echo 'Exception is:'.$e->getMessage();
        }
        return $count;
    }
    /**
     * 提交事务。针对执行exec_sqlite后
     */
    function commit_sqlite($conn) {
        $conn->commit();
    }
    //关闭连接
    function close_sqlite($conn) {
        $conn=null;
    }
}
?>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多