▼ ps.bat : このバッチファイルがある場所にパスを通しています@powershell -NoProfile -ExecutionPolicy Unrestricted "./%1.ps1"PowerShell で System.Data.Odbc を使用して MySQL のデータを一覧表示( csv ) では、PowerShell の記述で処理しましたが、特異な環境や目的でも無いかぎり、C# のコードを直接使用したほうが、流用しやすくコストが安く済みます。 get_rec_mysql.cs は、一般的な using を使用した単純なデータベースの行の取得です。このコードを PowerShell で実行するには以下の3行で可能です。Add-Type -path "get_rec_mysql.cs" ` -ReferencedAssemblies System.Windows.Forms, System.Data [Program]::Start()get_rec_mysql.cs
using System; using System.Data.Odbc; using System.Windows.Forms; public class Program { public static void Start() { loadMySql(); Console.WriteLine( "処理が終了しました" ); MessageBox.Show("処理が終了しました"); } public static void loadMySql() { using (OdbcConnection myCon = new OdbcConnection()) using (OdbcCommand myCommand = new OdbcCommand()) { // 新しい OdbcConnectionStringBuilder オブジェクトを作成 OdbcConnectionStringBuilder builder = new OdbcConnectionStringBuilder(); // ドライバ文字列をセット ( 波型括弧{} は必要ありません ) // 文字列を正確に取得するには、レジストリ : HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI builder.Driver = "MySQL ODBC 5.3 Unicode Driver"; // 接続用のパラメータを追加 builder.Add("SERVER", "localhost"); builder.Add("DATABASE", "lightbox"); builder.Add("UID", "root"); builder.Add("PWD", ""); // 内容を確認 Console.WriteLine(builder.ConnectionString); myCon.ConnectionString = builder.ConnectionString; // ********************* // 接続 // ********************* try { // 接続文字列を使用して接続 myCon.Open(); // コマンドオブジェクトに接続をセット myCommand.Connection = myCon; // コマンドを通常 SQL用に変更 myCommand.CommandType = System.Data.CommandType.Text; } catch (Exception ex) { MessageBox.Show(ex.Message); return; } // ********************* // 実行 SQL // ********************* myCommand.CommandText = "select * from 社員マスタ"; // ********************* // レコードセット取得 // ********************* try { using (OdbcDataReader myReader = myCommand.ExecuteReader()) { string csv_format = "{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}"; string out_line = ""; while( myReader.Read() ) { out_line = string.Format(csv_format, myReader.GetValue(0).ToString(), myReader.GetValue(1).ToString(), myReader.GetValue(2).ToString(), myReader.GetValue(3).ToString(), myReader.GetValue(4).ToString(), myReader.GetValue(5).ToString(), myReader.GetValue(6).ToString(), myReader.GetValue(7).ToString(), myReader.GetValue(8).ToString(), myReader.GetValue(9).ToString(), myReader.GetValue(10).ToString() ); Console.WriteLine( out_line ); } // リーダを使い終わったので閉じる myReader.Close(); } } catch (Exception ex) { myCon.Close(); MessageBox.Show(ex.Message); return; } // 接続解除 myCon.Close(); } } }
|
【PowerShell + C#の最新記事】
- nuget.exe CLI を使用してパッケージをダウンロードし、C# のソースコードで利用して PowerShell でビルドする
- PowerShell を使用して、C# のコンソールアプリ用のソースコードから exe を作成する( WebClient で wget.exe ) / ビルドせずに PowerShell で実行
- PowerShell で VisualStudio で作成した Form アプリケーションをビルドする( DataGridView に select 文の結果を表示する / MySQL )
- PowerShell で VisualStudio で作成した Form アプリケーションをビルドする( Form アプリケーションを テキストエディタのみで作成するテンプレート )
- TKMP + imap + C# + PowerShell : メールボックス(階層)の一覧表示
- nuget.exe + SMO + PowerShell + C# : テーブルの CREATE TABLE 文 を取得
- PowerShell( 実質C# )を使用して、ファイルの分割を行う
- PowerShell( 実質C# )を使用して、MessageBox の応答でバッチファイルの処理を変化させる