前提条件 Visual Studio をインストール時にインストールされた SQLExpress の 設定は以下を参考にして下さい SQLExpress 2005 の接続設定 単独でダウンロードしてインストールした場合は、上記ページと以下を参考にして下さい SQLExpress 2005 のインストールから最速設定 その上で以下よりデータとスクリプトをダウンロードしてテーブルを作成して下さい VBS : SQLExpress(SQLServer) に 販売管理B を作成する 上記販売管理Bの社員マスタには、生年月日が無いので以下の SQL を実行して下さい
alter table [社員マスタ] add [生年月日] DATETIME
概要 PHP でデータベースにアクセスする場合、PDO を使用すると接続部分を変更するだけで、 一般的な処理ならば他のDBでも同じコードで済むというメリットがあります。 ただ、PHP は フリーソフトなので、データベースに対する対応については、利用する側 が十分に考察する必要があります。 PDO の SQLServer に対する見解として、オンラインマニュアルで以下のような記述を 見る事ができます
Windows では、Microsoft SQL Server や Sybase データベースにアクセスする際には PDO_ODBC ドライバを使用すべきです。 Windows 版のネイティブの DB-LIB は時代遅れになっており、 スレッドセーフではない上に Microsoft にもサポートされていません。
要するに、PDO で SQLExpress で接続する場合は ODBC を使えという事です。 実際問題として、Windows では COM を使っても十分動きますし、SQLServer 特有の 処理は、おそらく SQL-DMO を COM 経由で処理すると動くと思いますし、一般的 な処理であれば、ODBC を使うのが最も安全でしょう
<? $strDriver = "{SQL Native Client}"; $strTarget = "NIGHT_TCP"; // 別名 $strDB = "lightbox"; $strUser = "sa"; $strPass = "passwordpassword"; // ********************************************************** // Windows 用動的ロード // ********************************************************** if ( !extension_loaded( "pdo" ) ) { dl("php_pdo.dll"); } if ( !extension_loaded( "pdo_odbc" ) ) { dl("php_pdo_odbc.dll"); } // ********************************************************** // 接続 // ********************************************************** $Cn = new PDO( "odbc:Driver=$strDriver;Server=$strTarget;" . "Database=$strDB;Uid=$strUser;Pwd=$strPass;"); $Cn2 = new PDO( "odbc:Driver=$strDriver;Server=$strTarget;" . "Database=$strDB;Uid=$strUser;Pwd=$strPass;"); $Query = "select * from [社員マスタ]"; // ********************************************************** // レコードセット // ※ メタデータは取得できませんでした // ********************************************************** $handle = fopen( ".\\社員マスタ.csv", "w" ); $Rs = $Cn->Query( $Query ); $nFields = $Rs->columnCount(); $hbuffer = ""; $update_cnt = 0; while( $result = $Rs->fetch(PDO::FETCH_ASSOC) ) { if ( $hbuffer == "" ) { $field_names = array_keys($result); for( $i = 0; $i < $nFields; $i++ ) { if ( $hbuffer != "" ) { $hbuffer .= ","; } $hbuffer .= $field_names[$i]; } fwrite( $handle, $hbuffer . "\n" ); } $buffer = ""; for( $i = 0; $i < $nFields; $i++ ) { if ( $buffer != "" ) { $buffer .= ","; } $buffer .= $result[$field_names[$i]]; } fwrite( $handle, $buffer . "\n" ); // 更新( 別接続 ) $day = ($update_cnt % 5) + 1; $Query = "update [社員マスタ] set [生年月日] = '2005/01/0$day'"; $Query .= " where [社員コード] = '{$result['社員コード']}'"; $Cn2->exec( $Query ); // false がエラーです。 0 は、実行が成功しても対象が無かった場合に返ってきます // ですから、if ( !$ret ) は正しくありません if ($ret===false) { print_r( $Cn->errorInfo() ); } $update_cnt++; } // ********************************************************** // ファイルクローズ // ********************************************************** fclose( $handle ); // ********************************************************** // 接続解除 // ********************************************************** $Cn2 = null; $Cn = null; ?>
|
【SQLExpressの最新記事】
- SQLServer の BCP で INT IDENTITY 列に csv からリストアする
- VBScript : ADO : ODBC接続 : SQLExpress(SQLServer) 接続と通常処理( 更新は SQL で行う )
- Microsoft SQLExpress : sa に空のパスワードを設定する方法
- SQLExpress バッチ DB バックアップ
- C# : VB.net : SQLExpress(SQLServer) : SQL-DMO と同等の SMO によるバックアップ
- 各RDBMS の正規表現の実装状況 : MySQL, SQLServer, PostgreSQL, Oracle
- SQLServer の OPENDATASOURCE 関数による Excel の参照( Microsoft.Jet.OLEDB.4.0 と Microsoft.ACE.OLEDB.12.0 )
- SQLServer(SQLExpress) : SQL学習用販売管理データとインポート用スクリプト
- SQLExpress 2005( および 2008 ) の接続設定
- SQLExpress 内に存在する表の CREATE 文を取得する
- ファイルから直接データベースを別のPCでリストアする / SQLExpress
- 目的のDBが使用している物理ファイルのパスの確認 / SQLExpress
- ピンポイントですが、SQLServer 2008 は SQLServer 7.0 のデータをロード出来ないのです
- SQLExpress2005 で副問い合わせを含む VIEW が異常終了しました
- VBS : SQLServerよりExcel へエクスポート(Excel製品は必要ありません)
- SQLServer のドキュメント
- VBS : SQLExpress(SQLServer) テーブルの正しい CREATE 文を取得する
- PHP : SQLExpress(SQLserver) : COM による接続処理
- ODBC 用 JDBC : 動的接続 / SQLExpress(SQLServer) / 読み込みながらの行更新
- VBScript : ADO : 純正接続 : SQLExpress(SQLServer) 接続と通常処理