PowerShell から Connector/NET で MySQL を操作する

by kusakari 29. 1月 2010 20:40

前回、PowerShell から ODBC 経由で MySQL に接続しました。今回は Connector/NET を使用して PowerShell から MySQL に接続してみたいと思います。

 

環境は下記の通りです。

  • PowerShell 2.0
  • MySQL 5.1.42 x64
  • Connector/NET 6.2.2

 

Connector/NET のダウンロードは下記のURLから行えます。
http://dev.mysql.com/downloads/connector/net/

 

今回ダウンロードしたのは、下記の内容等になります。

  • Connector/NET 6.2.2   Windows (x86, 32-bit), ZIP Archive

 

 

ダウンロードしたZIPを解凍して出来た、mysql.data.msiファイルを実行してインストーラーを下図のような流れで走らせます。
※今回はデフォルト設定でインストールしています。
2010129_19618_754 2010129_19631_755 2010129_19652_756 2010129_19728_757

 

 

インストール終了後、下記のパスに「MySql.Data.dll」のdllファイルが存在することを確認します。
C:\Program Files (x86)\MySQL\MySQL Connector Net 6.2.2\Assemblies
2010129_20137_759 
※今回は、「MySql.Data.dll」ファイルを「C:\Temp」フォルダにコピーして利用しています。

 

 

 

■DLLのロード
DLLをロードするには下記のような感じでコマンドを入力します。

[void][System.Reflection.Assembly]::LoadFile("C:\Temp\MySql.Data.dll")

 

■MySqlConnection の作成
MySql.Data.MysqlClient.MySqlConnection を作成します。

$conn = New-Object MySql.Data.MysqlClient.MySqlConnection("userid=<MySQLに接続するユーザー名>;password=<パスワード>;Host=<MySQLをインストールしてあるPC名>;database=<接続するデータベース名>")

 

■MySqlCommand の作成
MySql.Data.MySqlClient.MySqlCommand を作成してSQL文を設定します。

 

 

 

 

■サンプル1
下記のサンプルでは、ローカルのMySQLに存在するDBの一覧を表示しています。

[void][System.Reflection.Assembly]::LoadFile("C:\Temp\MySql.Data.dll")
$connStr = "("userid=<MySQLに接続するユーザー名>;password=<パスワード>;host=localhost";
$cmd = "SHOW DATABASES"

$conn = New-Object MySql.Data.MysqlClient.MySqlConnection($connStr)
$sqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($cmd, $conn)
$conn.Open()
$reader = $sqlCmd.ExecuteReader();

while($reader.Read()) {
    write ("{0}" -f $reader[0])
}

$sqlCmd.Dispose()
$conn.Close()
$conn.Dispose()

 

■サンプル2
下記のサンプルでは、ローカルのMySQLにhogehogeという名前のDBを作成しています。

[void][System.Reflection.Assembly]::LoadFile("C:\Temp\MySql.Data.dll")
$connStr = "userid=<MySQLに接続するユーザー名>;password=<パスワード>;host=localhost";
$cmd = "CREATE DATABASE hogehoge"

$conn = New-Object MySql.Data.MysqlClient.MySqlConnection($connStr)
$sqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($cmd, $conn)
$conn.Open()
$sqlCmd.ExecuteNonQuery() | Out-Null

$sqlCmd.Dispose()
$conn.Close()
$conn.Dispose()

 

サンプルについては例外処理を省略してあります。

IIS 7.5 に bbPress 1.0 をインストール

by kusakari 28. 1月 2010 19:49

bbPress は Wordpress ライクのフォーラムソフトです。
今回は下記の環境で、bbPress 1.0.1 日本語リソースを使って bbPress のインストールしてみたいと思います。

  • IIS 7.5
  • PHP 5.2.12
  • MySQL 5.1.42 x64

 

■1.下記のURLから bbpress-1.0.2.zip の bbPress 本体と、bbPress 1.0.1 日本語リソースをダウンロードします。
http://bbpress.org/
http://svn.automattic.com/bbpress-i18n/ja/tags/1.0.1/

 

■2.ダウンロードしたbbPress本体のZIPファイルを解凍して出来た「bbpress」フォルダを、「c:\inetpub\wwwroot」フォルダに保存して「bbpress1.0.2」という名前で保存します。

 

■3.「C:\inetpub\wwwroot\bbPress1.0.2」フォルダに「my-languages」フォルダを作成します。
作成したmy-languagesフォルダに、bbPress 1.0.1 日本語リソースの下記2ファイルを保存します。

  • ja.mo
  • ja.po

 

 

■4.「C:\inetpub\wwwroot\bbPress1.0.2\bb-config-sample.php」をエディタで開いて、63行目付近にある「define( 'BB_LANG', '' );」の部分を下記のように編集して保存します。

define( 'BB_LANG', 'ja' );

 

■5.下記のコマンドでMySQLにDBを作成します。

create database bbpress default character set utf8;

 

■6.下記のコマンドでフォルダに権限を与えます。

icacls C:\inetpub\wwwroot\bbPress1.0.2 /grant "Authenticated Users":(OI)(CI)(M)

 

■7.IISマネージャーから下図のように仮想ディレクトリを作成します。
2010128_181514_729

 

 

■8.「http://URI/bbPress/」にアクセスして、下図のような流れでインストールしていきます。
※最後にエラーが発生していますが、php.iniでsmtpの設定を行っていれば出ないはずです。
2010128_183336_738 2010128_183348_739 2010128_183419_741 2010128_183429_742 2010128_183439_743 2010128_183448_744 2010128_183522_745 2010128_183543_746

 

 

■結果
2010128_183657_748 2010128_183832_749

PowerShell から System.Data.SQLite を使用してみる

by kusakari 25. 1月 2010 21:36

PowerShell から System.Data.SQLite を利用して SQLite を操作してみたいと思います。

System.Data.SQLite は下記のURLからダウンロード出来ます。
http://sqlite.phxsoftware.com/

 

今回は、「SQLite for ADO.NET 2.0」の SQLite-1.0.65.0-binaries.zip をダウンロードします。
解凍したbinフォルダ内にある、「System.Data.SQLite.DLL」と「System.Data.SQLite.XML」を、適当なフォルダに保存します。
※今回は、C:\Tempフォルダに保存しています。
※64bitの「System.Data.SQLite.DLL」を利用される場合は、解凍したフォルダのbinフォルダ内にある、x64フォルダにDLLがあります。

 

 

■DLL読み込み
まずは、System.Data.SQLite.DLL を読み込みます。

[void][System.Reflection.Assembly]::LoadFile("C:\Temp\System.Data.SQLite.DLL")

 

 

■SQLiteConnection
下記のような感じで、SQLiteConnection を作ります。

New-Object System.Data.SQLite.SQLiteConnection

 

 

■ConnectionString
下記のような感じでdbファイルを指定します。

"Data Source = C:\Temp\data.db"
※今回は、C:\Tempフォルダ内に、data.dbというファイルを作成してあります。

 

 

■SQLiteCommand
下記のような感じで、SQLiteCommand を作ります。

New-Object System.Data.SQLite.SQLiteCommand

また、Connection プロパティには上記で作成した、ConnectionStringを、CommandText プロパティには、sql文を設定します。

 

 

■Execute
結果を返すか返さないかで、SQLiteCommand の下記のメソッドを呼びます。

ExecuteReader: 結果あり
ExecuteNonQuery: 結果なし

 

 

 

 

■サンプル1
tbl_hogehoge という名前のテーブルを作成します。

[void][System.Reflection.Assembly]::LoadFile("C:\Temp\System.Data.SQLite.DLL")
$sqlite = New-Object System.Data.SQLite.SQLiteConnection
$sqlite.ConnectionString = "Data Source = C:\Temp\data.db"
$sqlite.Open()

$cmd = @"
    CREATE TABLE tbl_hogehoge
    (
        id integer NOT NULL,
        name varchar(64)
    )
"@

$sqlcmd = New-Object System.Data.SQLite.SQLiteCommand
$sqlcmd.Connection = $sqlite
$sqlcmd.CommandText = $cmd
$sqlcmd.ExecuteNonQuery()
$sql.Close()

 

 

■サンプル2
tbl_hoghoge にデータを追加します。

[void][System.Reflection.Assembly]::LoadFile("C:\Temp\System.Data.SQLite.DLL")
$sqlite = New-Object System.Data.SQLite.SQLiteConnection
$sqlite.ConnectionString = "Data Source = C:\Temp\data.db"
$sqlite.Open()

$cmd = @"
    INSERT INTO tbl_hogehoge (
        id,
        name )
    VALUES(
        1,
        'ネコ' )
"@

$sqlcmd = New-Object System.Data.SQLite.SQLiteCommand
$sqlcmd.Connection = $sqlite
$sqlcmd.CommandText = $cmd
$sqlcmd.ExecuteNonQuery()
$sql.Close()

 

 

■サンプル3
テーブル tbl_hogehoge のデータを参照します。

[void][System.Reflection.Assembly]::LoadFile("C:\Temp\System.Data.SQLite.DLL")
$sqlite = New-Object System.Data.SQLite.SQLiteConnection
$sqlite.ConnectionString = "Data Source = C:\Temp\data.db"
$sqlite.Open()

$cmd = @"
    SELECT * FROM tbl_hogehoge
"@

$sqlcmd = New-Object System.Data.SQLite.SQLiteCommand
$sqlcmd.Connection = $sqlite
$sqlcmd.CommandText = $cmd
$ret = $sqlcmd.ExecuteReader()

while( $ret.Read() ) {
    write ("{0}`t{1}" -f $ret[0], $ret[1])
}

$sql.Close()

 

※サンプルは例外処理を省略しております。

IIS 7.5 に OpenPNE 3.4 のインストール

by kusakari 22. 1月 2010 21:42

IIS 7.5 に OpenPNE 3.4 のインストールを行ってみます。
※インストールする際、パスなどに関しては各自の環境に合わせて読み替えてください。

 

環境としては、下記の通りです。

  • IIS 7.5 (URL Rewrite 1.1 x64 Japanese)
  • PHP 5.2.12
  • MySQL 5.1.42 x64
  • OpenPNE 3.4(安定版)

 

上記の環境を整備する場合は、下記の内容等を御覧下さい。 (一部、たんたかさんの投稿です。)
※下記の「PHPのインストール」での、phpのバージョンは 5.3 での内容になります。


なお、URL Rewrite 1.1 のモジュールは下記の「IIS 7 - 拡張機能 ダウンロード ページ」にある「URL 書き換えモジュール」からダウンロードできます。
http://technet.microsoft.com/ja-jp/iis/dd742256.aspx

 

 

 

■1
下記のURLから「安定版【OpenPNE-3.4.0】」のZIP版をダウンロードします。
http://www.openpne.jp/pne-downloads/openpne3/#openpne-3.3-3.4


■2
ダウンロードしたZIPファイルを解凍して、「c:\inetpub\wwwroot」フォルダにコピーします。


■3
コピーしたOpenPNEのフォルダを、「OpenPNE3.4」にリネームします。


■4
php.iniで、下記の設定値等が有効になっていることを確認します。

  • extension=php_mbstring.dll
  • mbstring.language = Japanese
  • mbstring.internal_encoding = UTF-8
  • extension=php_pdo.dll
  • extension=php_pdo_mysql.dll
  • extension=php_gd2.dll
  • extension=php_mysql.dll
  • extension=php_mcrypt.dll



■5
「C:\Program Files\MySQL\MySQL Server 5.1」にある「my.ini」をエディタで開きます。


■6
87行目付近にある、MySQLのモード設定の箇所を探して、下記のように編集します。

# Set the SQL mode to strict
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"




■7
「my.ini」の編集が完了したら保存して、「管理ツール」にある「サービス」を起動し「MySQL」を再起動します。


■8
「MySQL」サービスの再起動が完了したら、下記のコマンドを入力してMySQLに「openpne」データベースを作成します。

create database openpne default character set utf8;




■9
下記のコマンドを入力して、「Authenticated Users」グループに変更の権限を与えます。

cd C:\inetpub\wwwroot\openpne3.4
icacls apps /grant "Authenticated Users":(OI)(CI)(M) icacls bin /grant "Authenticated Users":(OI)(CI)(M) icacls config /grant "Authenticated Users":(OI)(CI)(M) icacls data /grant "Authenticated Users":(OI)(CI)(M) icacls i18n /grant "Authenticated Users":(OI)(CI)(M) icacls lib /grant "Authenticated Users":(OI)(CI)(M) icacls log /grant "Authenticated Users":(OI)(CI)(M) icacls plugins /grant "Authenticated Users":(OI)(CI)(M) icacls templates /grant "Authenticated Users":(OI)(CI)(M) icacls test /grant "Authenticated Users":(OI)(CI)(M) icacls .gitignore /grant "Authenticated Users":(M) icacls symfony /grant "Authenticated Users":(M)



■10
コントロールパネル等から、システムのプロパティを開いて「詳細設定」タブの「環境変数」ボタンを選択します。
2010122_114056_691


■11
「システム環境変数」にある「Path」を選択して、「php.exe」が存在するフォルダのパスを追加するように編集します。今回の私の環境では「c:\php\php.exe」となりますので、「c:\php」を変数に追加します。


■12
Pathを追加後、コマンドプロンプトから「path」コマンドを入力して、追加したパスが反映されているか確認します。反映されていない場合は、Windowsを再起動します。
2010122_19382_703


■13
下記のコマンドを入力して、設定ファイルを2つ作成します。

cd c:\inetpub\wwwroot\OpenPNE3.4\config
copy ProjectConfiguration.class.php.sample ProjectConfiguration.class.php
copy OpenPNE.yml.sample OpenPNE.yml




■14
OpenPNE.yml をエディタで開いて、下記の項目を設定します。また、必要であれば他のsmtpの設定等を編集します。

base_url: "http://example.com/"
mail_domain:
"example.com"



■15
下記のコマンドを入力して、OpenPNEのインストールをコマンドラインから行います。

cd C:\inetpub\wwwroot\openpne3.4
php symfony openpne:install

2010121_173637_685 2010121_17380_686


■16
正常にインストールが完了したら、下記のコマンドを入力して新規に作成された cache フォルダに対して「Authenticated Users」グループに変更の権限を与えます。

cd C:\inetpub\wwwroot\openpne3.4
icacls cache /grant "Authenticated Users":(OI)(CI)(M)
icacls web\cache /grant "Authenticated Users":(OI)(CI)(M)




■17
IISマネージャーを起動して、下図のように仮想ディレクトリを作成します。
2010121_161117_682


■18
「C:\inetpub\wwwroot\openpne3.4\web」フォルダにある、「.htaccess」ファイルを開いて下記の内容をコピーします。コピー後、IISマネージャーの「OpenPNE」仮想ディレクトリを選択し「URL 書き換え」から「規則のインポート」を実行します。

# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f

# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]

2010121_174412_688

また、空の規則を作成して、下記のような内容で規則を追加設定して順位を一番下にしておきます。

パターン: ^(.*)pc_backend.php/(.*)$
アクション: 書き換え
URLの書き換え: {R:1}pc_backend.php

2010122_183750_700


■19
「http://URI/OpenPNE/」にアクセスして、下記の初期アカウントを入力します。

メールアドレス: sns@example.com
パスワード: password



また、管理サイトに関しては「http://URI/OpenPNE/pc_backend.php」になります。
デフォルトのアカウント情報は下記の通りです。

アカウント名: admin
パスワード: password

 

 

 

■結果 
2010122_194047_704 2010122_194122_705

 

PowerShell から MySQL を操作する

by kusakari 20. 1月 2010 18:45

PowerShell から ODBC 経由で MySQL を操作して、データベースの作成や削除、更新、変更などの操作をしてみたいと思います。

MySQL の ODBCドライバなどの準備に関しては、前回投稿の「Windows Server 2008 R2 で MySQL の ODBC 接続」を御覧下さい。
※今回の内容に関しては、MySQLのODBCドライバがインストールされている必要があります。

 

実験環境

  • PowerShell 2.0
  • MySQL 5.1.41
  • Connector-ODBC 5.1.6

 

 

PowerShellからODBC経由でMySQLに接続するには、 .Net Framework の System.Data.Odbc の OdbcConnection を利用して接続します。
また、sql文に関しては、OdbcCommand クラスを利用します。

CREATE、DROP、INSERT、DELETE、UPDATEなどは、ExecuteNonQuery メソッドを利用します。
SELECTなど結果を返す場合には、ExecuteReader メソッドを利用します。

 

今回はサンプルとして、CREATEとSELECTの2種類を試してみたいと思います。
※サンプルに関しては例外処理は省略しています。

 

 

 

■サンプル - CREATE
下記の PowerShell サンプルでは、MySQLに「hogehoge」という名前のデータベースを作成しています。

[void][System.Reflection.Assembly]::LoadWithPartialName("System.Data")
$connectionString = "driver={MySQL ODBC 5.1 Driver};server=localhost;database=mysql;uid=ユーザー名;pwd=パスワード;"
$cmd = "CREATE DATABASE hogehoge"

$odbc_con = New-Object System.Data.Odbc.OdbcConnection($connectionString)
$odbc_con.Open()
$odbc_cmd = New-Object System.Data.Odbc.OdbcCommand
$odbc_cmd.Connection = $odbc_con
$odbc_cmd.CommandText = $cmd
$odbc_cmd.ExecuteNonQuery() | Out-Null

$odbc_cmd.Dispose()
$odbc_con.Close()
$odbc_con.Dispose()

 

 

■サンプル - SELECT
下記の PowerShell サンプルでは、MySQLにデフォルトで存在する 「mysql」 データベースの 「user」 テーブルを参照しています。

[void][System.Reflection.Assembly]::LoadWithPartialName("System.Data")
$connectionString = "driver={MySQL ODBC 5.1 Driver};server=localhost;database=mysql;uid=ユーザー名;pwd=パスワード;"
$cmd = "SELECT * FROM User"

$odbc_con = New-Object System.Data.Odbc.OdbcConnection($connectionString)
$odbc_con.Open()
$odbc_cmd = New-Object System.Data.Odbc.OdbcCommand
$odbc_cmd.Connection = $odbc_con
$odbc_cmd.CommandText = $cmd
$reader = $odbc_cmd.ExecuteReader()

while ($reader.Read())
{
    write ("{0}:{1}" -f $reader["Host"], $reader["User"])
}

$odbc_cmd.Dispose()
$odbc_con.Close()
$odbc_con.Dispose()

 

 

参考サイト

 

Calendar

<<  7月 2010  >>
月曜火曜水曜木曜金曜土曜日曜
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar

RecentComments

Comment RSS