SQL Server 接続 C#, VB.net

C#, VB.netでSQL Serverに接続する簡単な例。

C#

//SQL Serverへの接続
private int SQLExec()
{
  try
  {
    var res = 0;
    var connectionString = GetConnectionString();
    var queryString = “SELECT count(*) FROM ~”;

    using (SqlConnection cn = new SqlConnection(connectionString))
    using (SqlCommand cmd = new SqlCommand(queryString, cn))
    {
      cn.Open();
      cmd.CommandType = CommandType.Text;
      cmd.CommandTimeout = 120;
      res = (int)cmd.ExecuteScalar();
    }

    return res;
  }
  catch (Exception ex)
  {
    var ErrCaption = Application.ProductName + “(” + System.Reflection.MethodBase.GetCurrentMethod().Name + “)”;
    Debug.WriteLine(ErrCaption + ” ” + ex.Message);
    return -1;
  }
}

//接続文字列作成 Windows認証
private string GetConnectionString()
{
  var builder = new SqlConnectionStringBuilder()
  {
    IntegratedSecurity = true, // Windows認証
    InitialCatalog = “DB名”,
    DataSource = “(local)”
  };
  return builder.ToString();
}

//接続文字列作成 SQL Server認証
private string GetConnectionString2()
{
  var builder = new SqlConnectionStringBuilder()
  {
    IntegratedSecurity = false, // SQL Server認証
    InitialCatalog = “DB名”,
    DataSource = “(local)”,
    UserID = “ユーザー名”,
    Password = “パスワード”
  };
  return builder.ToString();
}


VB.net

‘SQL Serverへの接続
Private Function SQLExec() As Integer
  Try
    Dim Res As Integer = 0
    Dim connectionString As String = GetConnectionString()
    Dim queryString As String = “SELECT count(*) FROM ~”

    Using cn As New SqlConnection(connectionString)
      Using cmd As New SqlCommand(queryString, cn)
        cn.Open()
        cmd.CommandType = CommandType.Text
        cmd.CommandTimeout = 120
        Res = cmd.ExecuteScalar
      End Using
    End Using

    Return Res
  Catch ex As Exception
    Dim ErrCaption As String = My.Application.Info.ProductName & “(” & Reflection.MethodBase.GetCurrentMethod.Name & “)”
    Debug.WriteLine(ErrCaption + ” ” + ex.Message)
    Return -1
  End Try
End Function

‘接続文字列作成 Windows認証
Private Function GetConnectionString() As String
  Dim builder = New SqlConnectionStringBuilder With {
    .IntegratedSecurity = True, ‘Windows認証
    .InitialCatalog = “DB名”,
    .DataSource = “(local)”
  }
  Return builder.ToString
End Function

‘接続文字列作成 SQL Server認証
Private Function GetConnectionString2() As String
  Dim builder = New SqlConnectionStringBuilder With {
    .IntegratedSecurity = False, ‘SQL Server認証
    .InitialCatalog = “DB名”,
    .DataSource = “(local)”,
    .UserID = “ユーザー名”,
    .Password = “パスワード”
  }
  Return builder.ToString
End Function

フレッツ 光WiFiアクセスをなんとか快適に使う方法

※ この記事は、フレッツ光でWifiを使うという内容ではなく、集合住宅向けインターネット接続サービス「フレッツ 光WiFiアクセス」に関するものです。

「フレッツ 光WiFiアクセス」は、
アンテナがマンションの外の壁などに設置されているせいか、
部屋の中に届く電波が弱い。

2.4GHz帯と5GHz帯(W56)両方の電波が出ているが、
5GHz帯の電波はほとんど部屋の中に入ってこないし、2.4GHz帯は不安定。

アンテナに近い玄関先や窓際などに中継器を置いて電波を部屋の中に取り込めばいいのだが、普通の無線LAN中継器では、フレッツ 光WiFiアクセスのアクセスポイントに接続は出来るが、認証がうまくいかずインターネットに接続できない。

従来は、NECのAterm W500Pを公衆無線LANモードにすることで使えたが、生産終了になってしまいファームウェアのアップデートもされなくなってしまった。
そこで別の機種を試したところ、BuffaloのWMR-433W2が使えたので設定方法を以下に記す。
PCでの設定例だが、スマホからでも同様に出来ると思う。

【手順1】
WMR-433W2側面の切替スイッチを5GHzにする。
※フレッツ 光WiFiアクセスは2.4GHz帯は不安定で全くといっていいほど使えないので、アンテナと中継器間を5GHzで接続する必要がある。

【手順2】
設置・初期設定ガイドの [1]本製品を設置・配線する – 無線LAN(ホテルなどの無線LAN サービス)に接続する場合 に従って電源を入れる。

重要: WMR-433W2はフレッツ 光WiFiアクセスのアンテナになるべく近い窓際に置く。そうしないと速度が出ない。

3分待つ。

【手順3】
設置・初期設定ガイドの [2]インターネットに接続する に従ってPCからWMR-433W2のアクセスポイント(セットアップカードの「SSID(a)」に記載)に接続する。

【手順4】
設置・初期設定ガイドの [3]インターネットに接続する(無線LAN に接続する場合のみ)に従ってSSID=”FLETS-WIFI”に接続する。

「ワイヤレスワンモード」を選択することがポイント。

検索ボタンを押してから接続先の一覧が表示されるまで30秒くらいかかる。
“FLETS-WIFI”はチャンネル120と132の2つが表示されるがどちらを選んでも同じ(信号強度が強い方を選べば良い)。
「完了」を押すとWMR-433W2が再起動する。

設置・初期設定ガイドには「再起動が完了しました」と表示されると書いてあるが、表示されない場合も多いと思う。
WMR-433W2が再起動した頃合いを見てPCも再起動する。

※PCの場合でブラウザーのアドレス欄に「192.168.13.1」を入力してもログイン画面が出ない場合は、
ユーザーマニュアル第4章IPアドレスの固定方法のやり方でPCのIPアドレスを固定する。
それでもダメな場合はWMR-433W2とPCを再起動する。再起動は重要。
WMR-433W2のIPアドレス「192.168.13.1」はPC側のIPアドレスよって変わってしまう場合もあるらしく、
どうしてもログイン画面が出ない場合はWMR-433W2とPCの電源を両方とも切って、WMR-433W2の電源を入れて、しばらくしてからPCの電源を入れるとか、スマホからやってみるとか色々やってみるしかない。
この設定画面を出すのがBuffaloでもNECでもいつも最大の難関。NECだとスマホのスマートリモコンアプリでIPアドレスの確認ができるのだが。。。

【手順5】
手順4でPCのIPアドレスを固定にした場合はここでIPアドレスの設定を元に(自動取得に)戻し、再起動する。

【手順6】
PCを再起動してしばらく待つとWMR-433W2につながる(つながらない場合はWindowsの右下のインターネットアクセスから手動で接続する)。

ブラウザを立ち上げ適当なページを表示させると、フレッツ 光WiFiアクセスのログイン画面(https://wifi.e-flets.jp/entry/)が出るので、フレッツ 光WiFiアクセスの認証IDと認証パスワードを入力する。

以上でインターネットに接続できるようになる。
ここまでくると有線LANでも接続できるようになっている(はず)。

スマホ等からもWMR-433W2に接続すればインターネットにつながる。

フレッツ 光WiFiアクセスのログイン認証は約12時間経過すると再認証する必要があり面倒だが、根気強く毎回再認証していると2~3週間くらいで再認証が必要無くなり快適になる。
それでもたまに再認証が必要になるがしかたがない。

【2.4GHz帯やW52,W53でも使う方法】
PCやスマホで使うだけなら以上の方法で十分。
しかし上記の方法では、FLETS-WIFIから出ている5GHz(W56)の電波をWMR-433W2で受けているため、WMR-433W2からPCやスマホへ出てくる電波もW56となる。
そのため2.4GHz帯しか使えない端末や、屋内専用で5GHz帯のうちW52やW53しか使えない端末(Fire tv Stickなど)で使うことができない。

次のような構成にすることにより2.4GHz帯でも5GHz帯でも使えるようになる。

[WMR-433W2]-有線LAN-[無線LANルーター(ブリッジモード)]-有線/無線-[各種端末]

安定して使うポイントは、
WMR-433W2の電源を入れてしばらく待ってアンテナとのリンクが確立してから無線LANルーターの電源を入れることと、無線LANルーターをブリッジモードで使うこと。

2.4GHz帯・5GHz帯両方同時に出せる無線LANルーターを買って、このようにすればほぼどんな端末でも接続することができる。
フレッツ 光WiFiアクセスは一度に2つの端末からしかアクセスできないが、この方法なら何台でも同時に接続できる。

【その他】
WMR-433W2が不安定なせいなのかわからないが、2~3日経つとインターネットにつながらなくなる。その時はWMR-433W2の電源を入れ直す(FLETS-WIFIとの接続が確立するまで3分くらいかかる)。その後フレッツ 光WiFiアクセスのログイン画面(https://wifi.e-flets.jp/entry/)で再ログインする。

WMR-433W2よりもAterm W500Pの方がLAN側の無線をOffにできるし速くて安定している感じがするが、残念ながらAterm W500Pは脆弱性が見つかり対策のためのアップデートが提供されないのでお勧めはできない。
Aterm MR03LNは、公衆無線LANモードがあるので一見使えそうだが、5GHzを選んでもフレッツ 光WiFiアクセスのスポットに接続する際に勝手に2.4GHzになってしまい、不安定でまともに使えなかった。


ZXing.Netを利用してバーコード作成、読取(C#, VB.Net)

C#, VB.NetでZXing.Netを利用してバーコードを作成する例。

(1) ZXing.Netをインストール
Visual Studioの[NuGet パッケージ マネージャー]-[NuGet パッケージの管理]でインストールする。
現時点のバージョンは ZXing.Net.0.16.6

(2) C#の例

//作成
private void ZXing_Write()
{

var writer = new ZXing.BarcodeWriter();
//バーコードの種類
writer.Format = ZXing.BarcodeFormat.QR_CODE;
//サイズ
writer.Options.Height = 200;
writer.Options.Width = 200;
//マージン
writer.Options.Margin = 1;
//文字コード
writer.Options.Hints.Add(ZXing.EncodeHintType.CHARACTER_SET, “Shift_JIS”);
//エラー訂正レベル
writer.Options.Hints.Add(ZXing.EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.L);
//作成
pictureBox1.Image = writer.Write(“あいうえお”);

}

//読取
private void ZXing_Read()
{

var img = new Bitmap(pictureBox1.Image);

var reader = new ZXing.BarcodeReader();

//90度ずつ回転させて読取
//reader.AutoRotate = true;
//読み取れなかったときに白黒反転。デコードが遅くなるので注意。
//reader.TryInverted = true;
//数字無しの白黒バーコードの場合
//reader.Options.PureBarcode = true;
//ビットマップをよりDeepに解析
//reader.Options.TryHarder = true;
//文字数制限
//var len1 = new int[] { 10 };
//reader.Options.AllowedLengths = len1;
//コードの種類を限定。複数指定可能。
var BarcodeFormat1 = new List();
BarcodeFormat1.Add(ZXing.BarcodeFormat.QR_CODE); //QR_CODEに限定
reader.Options.PossibleFormats = BarcodeFormat1;

//読取
var result = reader.Decode(img);
if (result != null)
{
label1.Text = result.BarcodeFormat.ToString();
label2.Text = result.Text;
}

img.Dispose();

}

(3) VB.Netの例

‘作成
Private Sub ZXing_Write()

Dim writer As New ZXing.BarcodeWriter
‘バーコードの種類
writer.Format = ZXing.BarcodeFormat.QR_CODE
‘サイズ
writer.Options.Height = 200
writer.Options.Width = 200
‘マージン
writer.Options.Margin = 1
‘文字コード
writer.Options.Hints(ZXing.EncodeHintType.CHARACTER_SET) = “Shift_JIS”
‘エラー訂正レベル
writer.Options.Hints(ZXing.EncodeHintType.ERROR_CORRECTION) = ZXing.QrCode.Internal.ErrorCorrectionLevel.L

‘作成
PictureBox1.Image = writer.Write(“あいうえお”)

End Sub

‘読取
Private Sub ZXing_Read()

Dim img = New Bitmap(PictureBox1.Image)

Dim reader = New ZXing.BarcodeReader()

”90度ずつ回転させて読取
‘reader.AutoRotate = True
”読み取れなかったときに白黒反転。デコードが遅くなるので注意。
‘reader.TryInverted = True
”数字無しの白黒バーコードの場合
‘reader.Options.PureBarcode = True
”ビットマップをよりDeepに解析
‘reader.Options.TryHarder = True
”文字数制限
‘Dim len1() As Integer = {10}
‘reader.Options.AllowedLengths = len1

‘コードの種類を限定。複数指定可能。
Dim BarcodeFormat1 As New List(Of ZXing.BarcodeFormat)
BarcodeFormat1.Add(ZXing.BarcodeFormat.QR_CODE) ‘QR_CODEに限定
reader.Options.PossibleFormats = BarcodeFormat1

‘読取
Dim result As ZXing.Result = reader.Decode(img)
If (result IsNot Nothing) Then
Label1.Text = result.BarcodeFormat.ToString
Label2.Text = result.Text
End If

img.Dispose()

End Sub


2021(令和3)年2月20日 NuGetからインストールできるようになったので記事を書き直し。C#のコードを追加。