こんにちはゲストさん    
やはりZEND(Zend Framework)に置き換えて見た・・・A

ちょっと一休み・・・
ZENDの本家のページを見ると、「Zend_Dbはデータベースを抽象化するレイヤーで、 SQL操作のための共通APIを提供する意図があります。」(当然今回はZend_Dbを使ってSQLにアクセスするわけです。)と記述がありますが、この「抽象的」と云うのがいわば抽象的で分かり難いです。
結局SQLデータベース(データベースを気にすることなく)に関係なく共通のソースコードでアクセス出来ると云うことでして。逆に言えば「共通化」出来ないのであれば魅力が半減となるわけです。
ちょっと反れてしまいましたが、結局・・・MySqlであろうと、PostgreSQLであろうと、Oracleであろうと相手のシステム(DB)を気にしないで使えると云う事になる。

勿論、そのデータベースシステムに依存するの特殊なクエリーは無理にしても、通常のSQL分でのアクセスは共通化ところですね

メールでの問合せ
意見を書込む
やはりZEND(Zend Framework)に置き換えて見た・・・@

まず初めに、肝心なZend Frameworkをダウンロードし、インストールしなければなりません。

ダウンロード先
http://framework.zend.com/manual/ja/introduction.installation.html

適当なフォルダにこのライブラリをアップすれば、設置は完了です。
php.iniでそこのフォルダのパスを設定します。
   include_path = ".:/xxxxx/xxxxxxxxx/xxxxxx/ZendFramework/library" ←サーバ環境により異なり(相対パスではなく絶対パスであること)
   ここまでで、設定は完了です。

さて、Zend Frameworkを使ってデータベースに接続してみましょう
 今回は、今後の汎用性も考えて、ファクトリメソッドを使用してみた。
   $db_info = array(
    'host'     => 'localhost',
    'username' => '',
    'password' => '',
    'dbname'   => ’/xxxxxx/xxxxxxx/xxxxxxx/xxxxx/xxxxxxx/xxxxxxx/xxxxxxxxx.db’); ←Sqliteの為、データベーステーブルまでのパスとデータベース名を指定
   $db = Zend_Db::factory('Pdo_Sqlite', $db_info);
 ※恐らくこれらのパスの設定で少し戸惑うかもしれませんが、詳細は本家のサイトか各解説ページがありますので、ここでは割愛しておきます。

上記設定にてデータベースに繋がれば、今度はこのファクトリメソッドの情報を書き換えるだけで各データベースにアクセス出来るように共通化が出来るはずです。

 とは云っても、そんなに簡単に行くわけも無く、共通化するにはクエリーの互換性の問題などが発生しますので、その当たりは後日書き込む事にします。

忘れてました・・・(最初に書き込んでおくべきでした
Sqliteの文字コードはUTF-8です、文字化けなどが心配な場合は、スクリプト(プログラム)も全てUTF-8に統一した方が間違いが少ないと思います。

メールでの問合せ
意見を書込む
やはりZEND(Zend Framework)かな...

少し時間のある時にMySqlからSQLiteへの移植作業を行ってみた。

まずはPDOを使ってMySqlDBへの接続・・・
$pdo = new PDO("mysql:host=localhost; dbname=xxxxxxxx", $username, $password);  //PDOのコンストラクタに「DSN」、「ユーザ名」、「パスワード」を設定し、接続は完了です。
※何故、MySqlのPDOバージョンを作ったかと云うと、もし移植性が良いのであれば、SQLiteのPDOバージョンはこのコンストラクタを変えるだけで大丈夫と考えたからである。

一通り、コーディングし直して、PDOを使ってのMySqlのアクセスは成功した。
最初は少し慣れないところもあったが、最終的にはなかなか使い易いではないか

しかし、最終的にはどうしてもMySqlとSQLiteの間で互換の取れない所が残ってしまった。
それは、DBにデータを書き込む時に使うクオート関数「mysql_escape_string」である、ここだけはSQLite時に「sqlite_escape_string」と書き換える必用がある。
折角、PDOでコーディングしてもmysql_xxx、やsqlite_xxxなどと云った関数を使うのでは、データベースの依存が残ってしまいます。
その後、PDOでのクオート方法を探したが、結局見つからなかった

趣味ならともかく実務で使うには、このようなちょっとした事でも引っかかってしまう。

結局全く同じソースコードでPDOのDBハンドルのみを書き換えただけで、MysqlSQLiteの両方で使うのは無理と考え、ZEND(Zend Framework)で試みることにした。

目標は、DBシステムに依存しない、システムの開発です。(どのデータベースでもDBハンドル部のみの変更で動作するシステム)

メールでの問合せ
意見を書込む
フリーでなくても良いから・・・

SQLiteで簡単なシステムを構築しようしたら早速壁にぶち当たる・・・
システム設計時には必ずデータベーステーブルの設計・メンテナンスが必用になるが、そのようような事が出来るTOOLが見あたらない
コーディングの部分は既存のエディターなどで何の問題も無いのだが、肝心なデータベースTABLEはどのように構築して行けば良いのか
フリーのTOOLは見つけたが、やはりフリーだけあって、最低限の機能は使えるのだが、細かい所が使えない(時間がかかったりする)。 「Navicat」などでは簡単にできることもできなかったりする。。。
趣味でちょっとしたものを制作するのであれば特に問題は無いのでしょうが、業務用ソフトの場合この生産性の悪さが命取りになるので、深刻な問題だ
結局フリー(無償)でも使えなければ何もなりません。  少しぐらいならお金を払ってでもよいものが欲しいと云う気持ちになってしまいます。
やはり当面複雑な操作はODBCを使用してAccessで操作するしか無いのかなと考える。 でも何れにしても面倒だなー
Navicat for SQLite」でもリリースされるのを待ちますか

SQLiteはまだ歴史的に浅いのでどうしても開発環境が整っていないとは思いますが、SQLite人口が増えることが今後の展開の鍵になると思います。もっともっとSQLiteを使ったシステムを沢山作りたいと思います。

メールでの問合せ
意見を書込む
初めてのSQlite

最近「SQLite」と云う文字を良く目にするようになったので、この辺で一通り使ってみようかなと云うことで少し使ってみた。
まず、ローカル(開発環境に)手を加えSQLiteを組み込んでみる・・・
何でもPHP5以降のVer.では標準でライブラリが入っていると事なので、特別に何かインストールする訳ではなく、php.iniの追加のみでOKとの事。
早速、php.iniを開いて下記の2行を追加
extension=php_pdo.dll
extension=php_sqlite.dll
(尚、dllはWin環境の場合でLinuxの場合はdllではなくsoになる・・・当たり前のことです)
結局、pdo(PHP Data Object)も組み込む訳ですがその理由について「PHP 5.1.0 以降、 PDO に依存するようになったからです。」となっているだけで詳しい説明はないモノのきっとPDOのライブラリの一部を使っているのだろうと勝手に解釈し素直に推奨通りの設定にしてみる。

では折角PDOを組み込むのだからPDOを使ってSQLiteをアクセスして見ようと考えまず、PDOを使ってコーディングしてみる・・・
流石にデータベース用のインターフェースだけあって、データベースを変えた時の移植性は良さそうである。

例えばMySqlからSqLiteへ移植の大半は問題は無く行くのだが、一番重要な所が移植できない
それは、DBへの書き込みの時にそのデータベースシステムに応じたクオートをする必用があるが、そこが共通化出来ない。
Mysqlの場合・・・mysql_escape_string()
SqLiteの場合・・・sqlite_escape_string()
テストの結果、Mysql→SqLiteの場合mysql_escape_string()のままにしておいても、特に問題無くクオートされているようではあるが、特殊な漢字の書き込みなどの不安が残る為に何かすっきりしない使い勝手になってしまう・・・

やはりここまで来るとZEND(Zend Framework)しかないかなと云う気持ちになる。

メールでの問合せ
意見を書込む
■ 1〜5件 全5件中