+ -
当前位置:首页 → 问答吧 → PHPRPC应用之二------PHPSql字串生成器DEMO

PHPRPC应用之二------PHPSql字串生成器DEMO

时间:2009-02-27

来源:互联网

PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。

http://www.phprpc.com


很久以前想写没动手,
C#负责客户端生成
PHPRPC负责数据库操作类和数据的提供;

在这个小项目里,因为不想用web界面,所以选择了c#来做客户端,但是c#有弊端就是数据库操作类的通用性问题,为了解决这个问题

我选择了PHPRPC来提供开放的API,用PDO来实现,这样就达到了目的,不怎么会说,不明白的可以跟帖,上图代码:

先只实现了后台框架,人容易扩展。

下载 (37.44 KB)
2009-2-27 14:21

下载 (28.13 KB)
2009-2-27 14:21

下载 (46.39 KB)
2009-2-27 14:21


db.class.php
[php]<?php
class API
{
        public function __construct()
        {
               
        }

        public function InitInfo($rnd)
        {
                if(!file_exists($rnd.'.ini'))
                {
                        $handle=fopen($rnd.'.ini','wb');
                        fclose($handle);
                }
                return true;
        }

        public function GetTables($rnd,$dbtype,$dbhost,$user,$pw,$dbname)
        {
                $ini ='dbtype='.$dbtype."\r\n";               
                $ini.='dbhost='.$dbhost."\r\n";
                $ini.='user='.$user."\r\n";
                $ini.='pw='.$pw."\r\n";
                $ini.='dbname='.$dbname."\r\n";       
                $handle=fopen($rnd.'.ini','wb');
                fwrite($handle,$ini);
                fclose($handle);
                $db = new DB($dbtype,$dbhost,$user,$pw,$dbname);
                return $db->GetTables();
        }

        public function GetFields($rnd,$table)
        {
                $ini=parse_ini_file($rnd.'.ini');
                $db = new DB($ini['dbtype'],$ini['dbhost'],$ini['user'],$ini['pw'],$ini['dbname']);
                return $db->GetFields($table);
        }

        public function a()
        {
                return 'dddff';
        }
};
class DB
{
        private $pdo=null;
        private $m_dbtype='';
        public function __construct($dbtype,$dbhost,$user,$pw,$dbname)
        {
                $dns=$dbtype.':host='.$dbhost.';dbname='.$dbname;
                $this->pdo = new PDO($dns,$user,$pw);
                $this->m_dbtype=$dbtype;
        }

        public function GetTables()
        {
                switch($this->m_dbtype)
                {
                        case 'mysql':
                                $rs=$this->pdo->query('show tables');
                                return $rs->fetchAll();
                                break;
                }
        }

        public function GetFields($table)
        {
                switch($this->m_dbtype)
                {
                        case 'mysql':
                                $rs=$this->pdo->query('DESCRIBE '.$table);
                                return $rs->fetchAll();
                                break;
                }
        }
};
?>[/php]

api.php
<?php
require_once('API/phprpc_server.php');
require_once('db.class.php');

$rpc = new phprpc_server();

$rpc->add(array(
'InitInfo',
'GetTables',
'a',
'GetFields'),new API());

$rpc->start();

/*
$api = new API();
$api->GetTables('2222','mysql','127.0.0.1','root','123456','l_taobao');
$api->GetFields('2222','l_class');
//echo $api->a();
*/
?>

客户端c#源代码:
CreateSQLString.zip (119.29 KB)
下载次数: 380
2009-2-27 14:21

作者: T.T.R   发布时间: 2009-02-27

很好很强大!提供个编译后的客户端吧,想用用

作者: tdweb   发布时间: 2009-02-27

客户端已收到,谢谢!

作者: tdweb   发布时间: 2009-02-27

支持

作者: houhuiyang   发布时间: 2009-02-27

作者: ilsanbao   发布时间: 2009-02-27

挺不错啊!

作者: lxylxy888666   发布时间: 2009-02-27

这么好的东西,不顶怎么行!

作者: andot   发布时间: 2009-02-27

师傅 我来顶你下



充电...

作者: nawanr   发布时间: 2009-02-27

很好呀,给个编译后的吧,谢谢。

作者: 05542002   发布时间: 2009-02-27

zip里的bin理由编译后的,需要dotnet2.0支持

作者: T.T.R   发布时间: 2009-02-28

太强了!

作者: naodai   发布时间: 2009-03-03

不错,学习了。

作者: mailangel123   发布时间: 2009-03-03

lz的头像很好看啊

作者: kwlong2008   发布时间: 2009-03-25

学习……

作者: 逆水鱼   发布时间: 2009-05-27

求客户端
cevin1991[at]yahoo.cn

作者: yafeikf   发布时间: 2009-05-27

mark一下

作者: netbuddy   发布时间: 2009-06-19

不错

作者: nianjin   发布时间: 2009-06-22

很不错的解决方法,狂顶楼主。

作者: hydata   发布时间: 2009-06-25