20251118mon
1. C#のデータ読込処理について(ExcecuteReader, DataAdapter, ExecuteScalar)
①1行ずつ読み取って書き込むとかなら DataReader()
SqlReader reader = command.ExecuteReader();
while(reader.Read())
{
}
②DataTableにいれるなら、DataAdapter.Fill
SqlDataAdapter da = new SqlDataAdapter(command);
DataTable dt = new DataTable()
da.Fill(dt);
③結果が一行と分かっているもの select count(*) とかなら ExecuteScalar()
2. WindowsFormのスレッド処理について
BeginInvokeは非同期でUIスレッドに処理を委譲する。呼び出し元はブロックされない。
Invokeは同期でUIスレッドに処理を委譲する。呼び出し元はブロックされる。
どちらにしても、処理はUIスレッドで行われる。
3. 変数宣言,関数宣言について
値型(string, int, bool, DateTime, enum などなど)は外と中どちらで宣言しても速度はほぼ変わらない。
foreach (var row in dt.Rows.Count) {
string ファイル名 = row[0];
}
string ファイル名 = ""
foreach (var row in dt.Rows.Count) {
ファイル名 = row[0];
}
参照型は外に置いたほうがいい。 毎回インスタンスを生成すると非常に遅くなる。