vb.net ログインサンプル
PR
vb.net windowsフォームのログインサンプルです。
vb2012動作します。
ユーザー、パスワードをaccess.mdbにあるデータで認証する簡単なデモ用サンプルです。
login画面→loginチェック→メニュー画面に遷移します。
コンテンツ内容
1.ログイン用のaccessmdbを作成しuserテーブルを追加
1.1 accessのMDBを新規作成。
1.2 userテーブルを新規作成。
user password name の3つの項目を作成userテーブルを新規作成します。
項目はテキスト型 の50文字ししておきます。
accessデータベースは「db1.mdb」にして適当な所に一時保存します。
1.3 userテーブルにログインデータを登録します。
ログインデータはaccessでメンテすることにします。
これでログイン用データの準備ができました。
2.vb.net windowsプログラムの作成
ここではvb.netのwindowsフォームのログインプログラムを作ります。
2.1 ログインフォームを作成します
プロジェクト>windws フォーム>ログインフォームを追加します
フォーム名:login.frm
ユーザー名の項目名をUser1
パスワードの項目名をpassword1にします
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
ublic Class Login Public Shared login_Name As String = "" Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Dim con1 As New OleDb.OleDbConnection Dim cmd1 As New OleDb.OleDbCommand ' DB接続文字列の設定 'con1.ConnectionString = _ ' "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & "C:\VB\main\main1\bin\Debug\db1.mdb" con1.ConnectionString = _ "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & "C:\VB\login_sample\login_sample\db1.mdb" ' コネクションの設定 cmd1.Connection = con1 ' DB接続を開く con1.Open() ' SQL文の設定 Dim SQL As String SQL = "SELECT * FROM [user] WHERE user = :p1 and password = :p2" cmd1.CommandText = SQL ' SQL文パラメータの設定 cmd1.Parameters.Clear() cmd1.Parameters.Add(":1", OleDb.OleDbType.Char, 10) cmd1.Parameters(":1").Value = Me.User1.Text cmd1.Parameters.Add(":2", OleDb.OleDbType.Char, 10) cmd1.Parameters(":2").Value = Me.Password1.Text ' データを取得する Dim dt As New DataTable Dim adapter As New OleDb.OleDbDataAdapter(cmd1) adapter.Fill(dt) adapter.Dispose() If dt.Rows.Count > 0 Then login_Name = dt.Rows(0).Item("name") MsgBox(login_Name & "さんですね") Else login_Name = "" MsgBox("データなし") End If ' DB接続を閉じる If Not con1 Is Nothing Then con1.Close() con1.Dispose() End If If login_Name = "" Then Exit Sub End If Dim f As New menu f.Show() My.Application.ApplicationContext.MainForm = f Me.Close() End Sub |
簡単な解説など
13 14 |
con1.ConnectionString = _ "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & "C:\VB\login_sample\login_sample\db1.mdb" |
Data Source=C:\VB\login_sample\login_sample\db1.mdbにMDB保管場所を指定します。自分の環境に合わせてください。
Jet.OLEDB.4.0 でも Microsoft.ACE.OLEDB.12.0でも動作しました。
23 |
SQL = "SELECT * FROM [user] WHERE user = :p1 and password = :p2" |
SQL文です。:P1 :P2がバインド変数で画面のuser,passwordを渡しています。
バインド変数は順番名前ではなく項目順にバインドされます。
ちなみに[user] を「」で囲むまないとエラーになります。テーブル名をuserにしないほうがいいですね。
こんな感じ
OKポタンを押す
↓
画面USER、PASSWORDでMDBのユーザー検索
↓
有れば名前をlogin_Nameにセットする
無ければ「データなし」を表示
↓
有れば画面をメニュー画面にする
これでlogin.vbは完成です
3.ログイン後のメニュー作成
menu.vb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Public Class menu Private Sub menu_Load(sender As Object, e As EventArgs) Handles Me.Load Me.Label1.Text = Login.login_Name End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim result result = MessageBox.Show("終了しますか?", "メッセージ", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) If result = vbOK Then End End If End Sub End Class |
解説
13 |
Me.Label1.Text = Login.login_Name |
menyu画面をloadする時にログインした時のユーザー名をshead変数Login.login_Nameにセットしたものを読み込みます。
これでログインイン時の内容をメニュー画面に引き継いでいます。
実行画面
ソースはgithubからダウンロードできます
https://github.com/xxishixx/vb_login_sample
その他いろいろ
いまどきVB.NETとな・・・とお思いでしょう、いざ調べると思ったものが見つからなかったり
web上でバージョンが違ったり多々あります。
accessmdbも久々に使いました。