C# : データベースを DataSet クラスで更新する / フィールドに値をセットして Update

更新の SQL を作成せずに、DataRow オブジェクトの中のフィールドに対して個別にデータをセットします。ここでは、 System.Data.SqlClient を使用していますが、OleDb や Odbc でも同じです。

▼ DataAdapter を使用した更新方法のサンプル
DataAdapter.Update(DataSet) Method
▼ 列にデータをセットする方法のサンプル
DataColumn Class
▼ 各オブジェクトの参照方法のサンプル
DataSet.Tables Property
▼ 接続からの全体像
DataSet Class
▼ DataSet 内の Table と言う名称について
複数のselect文をまとめて実行するには?
using System;
using System.Data;
using System.Data.SqlClient;

namespace DBUpdate1
{
	class Program
	{
		static void Main(string[] args)
		{
			DataSet dataSet = new DataSet();
			string connectionString;
			string queryString = "select * from 社員マスタ where 社員コード = '0001'";

			SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
			// 接続用のパラメータを追加
			builder.Add("Data Source", "layla");
			builder.Add("Initial Catalog", "lightbox");
			builder.Add("User ID", "sa");
			builder.Add("Password", "");

			// 接続文字列を取得
			connectionString = builder.ConnectionString;

			using (SqlConnection connection = new SqlConnection(connectionString))
			{
				// 接続
				connection.Open();
				SqlDataAdapter adapter = new SqlDataAdapter();
				// 参照用のマップを追加
				adapter.TableMappings.Add("Table", "社員マスタ");

				// SQL 作成
				SqlCommand command = new SqlCommand(queryString,connection);
				command.CommandType = CommandType.Text;
				adapter.SelectCommand = command;

				// 更新用のオブジェクトを準備
				SqlCommandBuilder commandBuilder = new SqlCommandBuilder(adapter);

				// データを取り出す
				adapter.Fill(dataSet);

				// テーブルを取得
				DataTable dataTable = dataSet.Tables["社員マスタ"];

				// 行と列の数( ここでは行は 1 )
				Console.WriteLine($"行数 : {dataTable.Rows.Count}");
				Console.WriteLine($"列数 : {dataTable.Columns.Count}");

				// 行
				DataRow row = dataTable.Rows[0];

				// 列の定義
				DataColumn column = dataTable.Columns["氏名"];
				Console.WriteLine($"氏名 : {column.DataType.ToString()}");
				column = dataTable.Columns["給与"];
				Console.WriteLine($"給与 : {column.DataType.ToString()}");
				column = dataTable.Columns["手当"];
				Console.WriteLine($"手当 : {column.DataType.ToString()}");
				column = dataTable.Columns["生年月日"];
				Console.WriteLine($"生年月日 : {column.DataType.ToString()}");

				// 列の正確なデータの取り出し
				string simei = row.Field<string>("氏名");
				Console.WriteLine(simei);
				int kyuyo = row.Field<int>("給与");
				Console.WriteLine(kyuyo);
				DateTime birth = row.Field<DateTime>("生年月日");
				Console.WriteLine($"{birth.ToShortDateString()}");

				// データのセット
				row["氏名"] = "山田 太郎";
				// 整数のセット
				row["給与"] = 10000;
				// NULL のセット
				row["手当"] = DBNull.Value;
				// 日付のセット
				row["生年月日"] = DateTime.Parse("1999/01/02");

				// 更新用のコマンドを取得
				adapter.UpdateCommand = commandBuilder.GetUpdateCommand();
				// 更新実行
				adapter.Update(dataSet);
			}

			// 一時停止
			Console.ReadLine();
		}
	}
}


更新の無い場合のデータ読み出し

接続準備等は同じなので、パラメータのセットの仕方を別バリエーションで行っています。
using System;
using System.Data.SqlClient;

namespace DBSelect
{
	class Program
	{
		static void Main(string[] args)
		{
			string connectionString;
			string queryString = "select * from 社員マスタ order by 社員コード";

			SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
			// 接続用のパラメータを追加
			builder.Add("Data Source", "layla");
			builder.Add("Initial Catalog", "lightbox");
			builder.Add("User ID", "sa");
			builder.Add("Password", "");

			// 接続文字列を取得
			connectionString = builder.ConnectionString;

			using (SqlConnection connection = new SqlConnection(connectionString))
			using (SqlCommand command = new SqlCommand())
			{

				// *********************
				// 接続
				// *********************
				connection.Open();
				// コマンドオブジェクトに接続をセット
				command.Connection = connection;
				// コマンドを通常 SQL用に変更
				command.CommandType = System.Data.CommandType.Text;

				// *********************
				// 実行 SQL
				// *********************
				command.CommandText = queryString;

				// *********************
				// レコードセット取得
				// *********************
				using (SqlDataReader reader = command.ExecuteReader())
				{

					// *********************
					// 列数
					// *********************
					int nCols = reader.FieldCount;

					// データ取得と表示
					int row_cnt = 0;
					while (reader.Read())
					{

						row_cnt++;

						// 初回のみ、タイトル文字列を設定
						if (row_cnt == 1)
						{
							for (int idx = 0; idx < nCols; idx++)
							{
								Console.Write($"{reader.GetName(idx)}  ");
							}
							Console.WriteLine();
						}

						// 行データ
						for (int idx = 0; idx < nCols; idx++)
						{

							// NULL でない場合
							if (!reader.IsDBNull(idx))
							{
								// 列のデータ型を取得
								Type fldType = reader.GetFieldType(idx);

								// 文字列
								if (fldType.Name == "String")
								{
									Console.Write($"{reader.GetValue(idx).ToString()}  ");
								}
								else if (fldType.Name == "Int32")
								{
									Console.Write($"{reader.GetInt32(idx)}  ");
								}
								else if (fldType.Name == "DateTime")
								{
									Console.Write($"{reader.GetDateTime(idx).ToShortDateString()}  ");
								}
								else
								{
									Console.Write($"{reader.GetValue(idx).ToString()}");
								}

							}
						}

						Console.WriteLine();

					}

					// リーダを使い終わったので閉じる
					reader.Close();

					connection.Close();
				}

			}       // 最外の using の終わり

			Console.ReadLine();
		}
	}
}




C#, データベース

jQuery で最初に覚える click イベントと css メソッド

アプリケーションを作成する上で最も重要なのは『イベント』の定義です。jQuery では、直接的なメソッド( 例:click メソッド )でイベントが定義できますが、ここでは全て on メソッドで定義します。

css メソッド以外にも重要な valtexthtmlprop と言った基本的なメソッドがありますが、HTML の知識があれば比較的理解して用いるのは容易です。しかし、css メソッドの中身はとても複雑で効果も知ってなければなかなか想像できない結果が起きるので、たくさん実行して慣れる事が重要です。

さらに、jQiery では画面上のコンテンツをオブジェクトとして選択する為に、CSS で使用する『セレクタ』という記述を使用します。その中で、代表的なのは id と 要素と クラスになります。

以下は、jQuery では無く CSS で定義されたものです。
<style>
#sei,#mei {
	background-color: pink;
}
#simei {
	background-color: skyblue;
}
div input {
	border: 1px solid #888;
	border-radius: 5px;
}
.entry,.output {
	padding: 5px;
}
</style>
<div>
	<input class="entry" type="text" id="sei">
	<input class="entry" type="text" id="mei">
	<input class="output" type="text" id="simei">
</div>
<input type="button" id="btn" value="実行">

まず、# を使用して id 属性が書かれた要素を特定します。id はユニークである必要があるので、個別に処理をしたい場合に必要となります。#sei,#mei と記述しているのは、両方とも対象とするという事です。

次に要素名で書く場合は、その要素が全て対象になります。画面内の仕様として全て同じ見せ方をしい場合の標準のセッティングに使えますが、div input と書いているのは、DIV 要素の子要素にある INPUT 要素と言う意味で、検索の条件として使用しています。

さらに、設計者にとって特別な意味を持つグループを定義する為の クラスを使用します。クラスは class="クラス名" の定義に対して、名前の前に .(ドット) を使ってクラスである事を示します。

これらの選択方法を使って、jQuery は要素を選択してオブジェクトとして扱います。

では、実際に CSS から jQuery のメソッドに変更してみましょう
	$("#btn").on("click", function(){
		$("#sei,#mei").css({ "background-color": "pink" });
		$("#simei").css({ "background-color": "skyblue" });
		$("div input").css({ "border": "1px solid #888", "border-radius": "5px" });
		$(".entry,.output").css({ "padding": "5px" });
		console.dir( this ); // this は DOM オブジェクト
		console.log( $(this).val() );
	});


style 要素内を全てコメントにするか、または削除して jQuery のコードで全く同じ記述を行います。但し、見た目は同じ結果でもページ内の定義は全て要素内のインラインスタイルとして実装されます。デベロッパーツールで参照すると以下のようになります。
<input class="entry" type="text" id="sei" style="background-color: pink; border: 1px solid rgb(136, 136, 136); border-radius: 5px; padding: 5px;">
<input class="entry" type="text" id="mei" style="background-color: pink; border: 1px solid rgb(136, 136, 136); border-radius: 5px; padding: 5px;">
<input class="output" type="text" id="simei" style="background-color: skyblue; border: 1px solid rgb(136, 136, 136); border-radius: 5px; padding: 5px;">

CSS の効果には優先順位があり、インラインスタイルは STYLE 要素の記述より優先されます。また、STYLE 要素内では後から書いたほうが優先(上書き)されますが、それらを全て無視して特別にその CSS を適用したい場合は、!important を使用します。

但し、jQuery では !important を指定できないので、STYLE 要素を作成してテキストとして CSS を記述してヘッド要素に追加するか、cssText を使用して直接インライン記述を書きます。

jQuery の css メソッドは、既存のインライン記述に追加されますが、cssText は既存のインライン記述を上書きするので注意が必要です。

💘 style 要素の追加

$("<style></style>")
    .text( ".output{background-color:white!important }")
    .appendTo(document.head);

💘 cssText を使用

$("#simei").css({"cssText": "color:navy!important"});





コマンドプロンプト作業の基本

コマンドプロンプトを起動する方法はいろいろありますが、その設定を他でも使えるようにする為にショートカットを作成します。

基本設定



💘 運用は、ショートカットの名前です。実行した時のタイトルになります。


※ 真ん中のコマンド履歴は F7 で表示されます

💘 作業フォルダは、実行時のフォルダになります
💘 ショートカットキーは、このショートカットを実行します
💘 リンク先のコマンドに引数を指定して実行中に使用可能な簡易コマンドを登録してます

C:\Windows\System32\cmd.exe /k set r=cd %cd%& set c=prompt $g& set p=prompt $p$g
🍊 /k は cmd を実行した後 /k 以降を実行してそのままウインドウを閉じないと言う意味です
🍋 & は複数の処理を順に実行する為の区切り文字です
🍌 %cd% は実行時変数で、現在のフォルダがセットされています
🍍 set r=cd %cd% によって、%r% で最初のフォルダに移動できます
🍎 set c=prompt $g によって、%c% でプロンプトのフォルダ表示なしです
🍏 set p=prompt $p$g によって、%p% でフォルダ表示のプロンプトです

フォント設定

デフォルトで問題ありません。過去ではラスターフォントでしたが、今は ttf であるべきだという説明があります。

背景色設定

キャプチャして印刷時に背景が黒だとトナーの無駄になります。( 文字色も黒に変更します )

実行中の変数

set コマンドで表示される一覧以外に以下のようなものがあります

🍊 %cd% : 現在のフォルダのパス
🍋 %random% : ランダムな整数値
🍌 %date% : 現在の日付
🍍 %cmdcmdline% : 実行中の cmd.exe 引数( & 以降は表示されない )

基本的なコマンド

🍊 cls 画面クリア
🍋 title タイトル文字列の変更
🍌 prompt 入力プロンプト文字列変更
🍍 echo 引数を表示します
🍎 type テキストファイルを表示します

実行中のプログラムの終了

💘 CTRL + C です

※ コマンドウインドウごと強制終了が必要な場合は、タスクマネージャを簡易表示にして『タスクの終了』を実行します。

画面スクロールを一時停止したい場合

💘 表示中に CTRL + S です が、表示速度が速く通常は都合よく止められ無いので コマンド | more を使います

疑似フルスクリーン

💘 疑似フルスクリーン は ALT + Enter です(F11でもよい)。デスクトップいっぱいに表示します。元に戻すのも ALT + Enter です

ヘルプの表示

通常は引数に /? で表示されますがものによっては引数無しで実行したりする場合もあります。また、日本語以外のソフトの場合、 --help や -help を引数にしてみるといいでしょう。

※ コマンドプロンプト実行中のヘルプは help です

UTF8 へ変更

めったに使う事は無いですが、UTF-8 のテキストを表示したい場合に使えます
mode con cp select=65001

※ SHIFT_JIS に戻すの時は 932 を使用します
※ chcp 65001, chcp 932 でも同等です

要素を参照する document オブジェクトのメソッド

単数

要素(Element) が単数形になっています(戻されるのは一つのオブジェクトです)

var element = document.getElementById(id);

セレクタに一致した最初のオブジェクトを返します

var element = document.querySelector(selectors);

複数

要素(Element) が複数形(Elements)になっています。戻されるのは複数のオブジェクトなので、そのうちの一つを参照する為に[index] で番号( 0 はじまり) で指定します。要するに戻されるのはコレクションですが、記述方法は配列です。

🔴 name 属性で取得

var elements = document.getElementsByName(name);

▼ この記事内の title( 単数と複数 ) を デベロッパーツールで表示( F12 で開いてください )



<script>
function test_name_title() {
	var elements = document.getElementsByName("title");
	console.dir( elements );
	for (var i = 0; i < elements.length; i++) {
		var item = elements[i];
		console.log( item.textContent );
	}
}
</script>

<input type="button" value="実行" onclick="test_name_title();">

▼ MDN より引用
リストの要素について処理を回すために for...in や for each...in を用いてはいけません。なぜなら、 NodeList のプロパティである要素に加えて、 length プロパティについても処理が適用されるため、 element オブジェクトのみ処理すべきスクリプトではエラーが生じます。また、for..in で取得されるプロパティの順番は保証されていません。

for...of ループ は IE11 で使用できません

🔴 要素名で取得

var elements = document.getElementsByTagName(name);

🔴 クラス名で取得

var elements = document.getElementsByClassName(names);
// または
var elements = rootElement.getElementsByClassName(names);

🔴 CSS セレクタで取得

セレクタに一致した全てのコレクションを返します

var elementList = parentNode.querySelectorAll(selectors);

ブークマークレットの作成方法( コードの書き方 )

通常の https:// の代わりに javascript: と書いて、その後には普通に JavaScript のコードを書きます。但し、改行コードは使えないので長い JavaScript のコードの場合は他でテストした上で改行コード取り去る必要があります。

また、メッセージボックスが出ないコードの場合は、最後に void(0); を追加するのが簡単です。

だれにでも解りやすい使い方

WEB ページ上の入力フィールドに固定値を表示させる事ができます。入力フィールドを DOM で参照する必要があり、その定義情報を知る知識が必要である事と、その定義情報はいつ変更されても仕方が無いという事を理解しておく必要があります。

関連する記事 🚩 要素を参照する document オブジェクトのメソッド

Google のページ 🚩 https://www.google.co.jp/ の検索入力で試します

Google の検索は name="q" なので以下のようなコードをブックマークに書き込めば使えます。
javascript:document.getElementsByName("q")[0].value="ブックマークレット";void(0)

※ 例えば業務上の社員番号入力などに使えます。

▼ コードの書き方には以下のようなバリエーションがあります
javascript:(function(){document.getElementsByName("q")[0].value="ブックマークレット";})();

この記法は無名 function の定義を実行するという意味で、書き換えると以下のようになります。
javascript:var a=function(){document.getElementsByName("q")[0].value="ブックマークレット";};a();


または以下のようにも書けますが、使い勝手が悪いので避けたほうがいいでしょう。
javascript:void(document.getElementsByName("q")[0].value="ブックマークレット");



WEB ページから登録できるようにするには、A 要素で以下のように記述します。
<a href="javascript:var%20a=function(){document.getElementsByName(%22q%22)[0].value=%22ブックマークレット%22;};a();" onclick="alert('クリックでは使えません');return false">ブックマークレット</a>


Edge 以外では、これをブックマークバーにドラッグ & ドロップで登録されると思います。

▼ 登録用リンク
ブックマークレット

Google のログインは、id="identifierId" なので、少し変えればアカウントの入力に使用できるでしょう。( 使うのは自宅の PC にしましょう )




コマンドプロンプトとフォルダを相互に効率良く使う

エクスプローラからコマンドプロンプト

フォルダの参照はエクスプローラで素早く行う事ができますが、そのフォルダでコマンドプロンプトを開くのはそう簡単ではありません。そこで SHIFT キーを押しながら右クリックで PowerShell を開く事ができるようになっているので、PowerShell から cmd と入力するとコマンドプロンプトを利用できます。

しかし、以下の参照先の方法でコマンドプロンプトを直接開くメニューを登録できます。

エクスプローラを右クリックしてそのフォルダで「コマンドプロント」を開くメニューを追加する

コマンドプロンプトからエクスプローラ

コマンドプロンプトが実行中のフォルダで、エクスプローラを開くのはとても簡単です。以下のように入力して下さい。

start .

この方法はたまたまですが、PowerShell のウインドウでも同じ効果を発揮します。

CD コマンドで『ワイルドカード』を使用する

CD コマンドは Change Directory の意味で、引数に移動先のフォルダのパスを相対または絶対参照で移動します。その際、全てのフォルダの文字列を入力する必要は無く、ワイルドカードが使えるので、C:\Program Files に移動する場合以下のように実行できます。

cd \prog*

それよりもっと簡単なのは『環境変数』を使う方法です。例えばテンポラリフォルダに移動するには以下のように入力します

cd %temp%

エクスプローラのアドレスでは、環境変数の入力のみで移動できます。よく使う必要のあるフォルダがあるのであれば、環境変数にフォルダのフルパスを登録しておくのは良い方法です。

PUSHD と POPD コマンドで2か所を移動

pushd %temp%

このように入力すると、cd %temp% と同様にフォルダを移動します。ただ、この場合 popd と入力すればすぐ元の場所へ戻れます。

Shell コマンドで開く

今は Microsoft の正式ドキュメントを見つける事はできませんが、こちらを参照すると、shell:キーワード で特別なフォルダを開く事ができる事が解ります。これらは、『ファイル名を指定して実行』や『エクスプローラのアドレス』で入力できます。ただし、コマンドプロンプトから実行するには以下のように入力します。

start shell:startup

Change which apps run automatically at startup in Windows 10

Shell と呼ばれるプログラミングの資料には、ShellSpecialFolder というものがあり、この中の定数文字列の殆どが実際利用できます。

以下はそれを確認するバッチファイルのサンプルです。

start shell:DESKTOP
pause
start shell:PROGRAMS
pause
start shell:PERSONAL
pause
start shell:FAVORITES
pause
start shell:STARTUP
pause
start shell:RECENT
pause
start shell:SENDTO
pause
start shell:NETHOOD
pause
start shell:FONTS
pause
start shell:TEMPLATES
pause
start shell:APPDATA
pause
start shell:PRINTHOOD
pause
start shell:COOKIES
pause
start shell:HISTORY
pause
start shell:WINDOWS
pause
start shell:SYSTEM
pause
start shell:PROGRAMFILES
pause
start shell:PROFILE
pause
start shell:SYSTEMx86
pause
start shell:PROGRAMFILESx86


この中で、ちょっと重要なのは以下のコマンドですね( 32ビットアプリケーションはいまでもとても重要です )

start shell:SYSTEMx86

MKEditor 追加設定インストーラ : プロジェクト自動作成スクリプトをエクスプローラの『新規作成』に追加します

MKEditor for Windows のダウンロード( Vector )

まず、MKEditor をインストールしておきます。その後から以下からダウンロードする書庫の中の install.bat を実行させます。





このスクリプトは、MKEditor の追加の設定を自動で行います。実行後、フォルダの選択ダイアログが表示されるので、MKEditor のインストールフォルダを選択して下さい



MKEditor.sck のキー割り当て

1) shift+f1 でアプリケーションで実行
2) shift+ctrl+del で、アイテム削除
3) f2 でボックス、フォルダ、アイテムのプロパティ
4) f4 で、フォルダ作成
5) Shift+f4 でボックス作成
6) Shift+Ctrl+U で 大文字( Upper )
7) Shift+Ctrl+L で 小文字( Lower )
8) Shift+Ctrl+Z で 全角
9) Shift+Ctrl+H で 半角
10) F5 相対パスでリンク
11) Shift+@ でエディタオプション

▼ MKEditor プロジェクトの実行

そのフォルダ内のみ対象とします

▼ MKEditor プロジェクト(全て)の実行 / 下の階層もすべて作成

全てのサブディレクトリも登録します。

但し、それらは常に1階層のディレクトリとしますので、深いツリー構造でも管理しやすくなります。
( 空のディレクトリも登録しますし、CTRL + SHIFT + DEL で削除も容易です )

▼ 対象拡張子の追加

MKEditor のインストール場所に build_mkp.wsf と build_mkp_all.wsf があります。その先頭付近に以下のような記述がありますので、これに追加します。

strList = ""
strList = strList & "CSV,PHP,HTM,TXT,INF,VBS,ASP,INC,WSF,ASA,ASPX,BAS,CSS,JS,SQL,SQLTXT,BAT,PS1,JAVA,JSP,VB,"
strList = strList & "HTA,HTM,HTML,SHTM,SHTML,PL,CGI,C,CPP,H,URL,REG,LOG,AS,MXML,XUL,DTD,PROPERTIES,MANIFEST,RDF,INI,"
strList = strList & "PY,RB,CS,PAS,DPR,TSV,XML,SH"

アンインストール

以下のキーをレジストリから削除してください

HKEY_CLASSES_ROOT\.layla002
HKEY_CLASSES_ROOT\.layla003

C# を PowerShell で実行 : Form 内のテキストフィールドに入力した結果をファイルに書き込む

PowerShell のコマンドウインドウで実行すると、2回目以降がエラーになるので、powershell に引数を渡して(バッチファイル)実行させています。

バッチ処理で、どうしても複雑な入力パラメータが必要な時に使えると思います。

関連する記事

C# を PowerShell で実行 : メッセージボックスの応答結果をファイルに書き込む ( バッチファイルで利用可能 )


form1.ps1
$code = @"
using System;
using System.IO;
using System.Windows.Forms;
public class MyClass {

	// ▼ これは無くても動作する
	[STAThread]
	public static void Main()
	{
		// テンプレート部分( 最初から記述されている )
		Application.EnableVisualStyles();
		Application.SetCompatibleTextRenderingDefault(false);
		// Form1 の作成
		Application.Run(new Form1());
	}

	// Form1 クラス
	private class Form1 : Form
	{
		// コンストラクタ
		public Form1()
		{
			InitializeComponent();
		}

		// 画面作成( デザイナが作成したもの )
		private void InitializeComponent()
		{
			this.textBox1 = new System.Windows.Forms.TextBox();
			this.button1 = new System.Windows.Forms.Button();
			// 
			// textBox1
			// 
			this.textBox1.Location = new System.Drawing.Point(47, 49);
			this.textBox1.Name = "textBox1";
			this.textBox1.Size = new System.Drawing.Size(191, 19);
			this.textBox1.TabIndex = 0;
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(274, 47);
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(75, 23);
			this.button1.TabIndex = 1;
			this.button1.Text = "実行";
			this.button1.UseVisualStyleBackColor = true;
			this.button1.Click += new System.EventHandler(this.button1_Click);

			//this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
			this.ClientSize = new System.Drawing.Size(400, 150);
			this.Controls.Add(this.button1);
			this.Controls.Add(this.textBox1);
			this.Text = "フォームのタイトル";
			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
		}

		// ボタンをクリックした時のイベント
		private void button1_Click(object sender, EventArgs e)
		{
			Console.WriteLine("button1_Click");

			// テンポラリフォルダのパスを取得
			string path = Environment.GetEnvironmentVariable("temp");

			// 書き込むファイルのフルパスを編集する
			string writePath = string.Format( @"{0}\_input_result", path );

			using (StreamWriter sw = new StreamWriter(writePath, false))
			{
				// 書き込み
				sw.Write( textBox1.Text );

				// ファイルを閉じます
				sw.Close();

			}

			// アプリケーション終了
			Application.Exit();
		}

		// コントロール用変数
		private System.Windows.Forms.TextBox textBox1;
		private System.Windows.Forms.Button button1;
	}
}
"@

Add-Type -Language CSharp -TypeDefinition $code -ReferencedAssemblies ("System.Windows.Forms","System.Drawing")

[MyClass]::Main()



form1.bat
@powershell -NoProfile -ExecutionPolicy Unrestricted "./form1.ps1"




エクスプローラを右クリックしてそのフォルダで「コマンドプロント」を開くメニューを追加する( .reg ファイルを実行 )

エクスプローラを右クリックしてコマンドプロンプトを開きたい場合は、以下のレジストリをインポートします(右端のダウンロードアイコンでダウンロード / 拡張子 .reg )
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\Folder\shell\cmd]
@="コマンドプロンプト(&Q)"
 
[HKEY_CLASSES_ROOT\Folder\shell\cmd\command]
@="cmd.exe /s /k pushd \"%V\""


HKEY_CLASSES_ROOT\Folder なのがミソです。同様の HKEY_CLASSES_ROOT\Directory は所有者が特殊でいろいろ面倒です

🔻 ショートカットは他とダブらないように Q にしました

🔻 SHIFT キーを押しながら右クリック

🔻 削除は以下です

Windows Registry Editor Version 5.00
 
[-HKEY_CLASSES_ROOT\Folder\shell\cmd]
 


🔻 インストール場所をレジストリエディタで開くスクリプトをダウンロードします







さくらインターネットの phpMyAdmin でテーブルを作成してデータを追加する

さくらインターネットでは、MySQL のバージョンによって、phpMyAdmin のバージョンにも違いがあります。

1) MySQL 5.5 : phpMyAdmin のバージョン : 3.3.10.5
2) MySQL 5.7 : phpMyAdmin のバージョン : 4.7.9

以降は、phpMyAdmin のバージョンが 4.7.9 のサンプルです

▼ テーブルの作成は以下の SQL を実行すると可能ですが、phpMyAdmin を使用すれば対話式で作成ができます。
create table `クラス名称` (
	`コード` varchar(4)
	,`名称` varchar(100)
	,`担当` varchar(20)
	,primary key(`コード`)
)

▼ MySQL のバージョン表示をコンソールから行えます


▼ テーブル作成画面です


▼ 新規行の入力画面です


ツリーからテーブルを選択すると現在のデータが表示されるので、編集からさらに新規データを作成する事もできます




INSERT INTO `クラス名称`(`コード`, `名称`, `担当`) VALUES (':value1',':value2',':value3')


データをバインドさせて SQLを実行

SQL のデータ部分に :(コロン) を前に付加した変数を用意すると、バイントのチェックボックスによって入力フィールドが現れます。