Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ログインフォーム
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30326#CommentId83262
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
ど素人
 (社会人)
投稿日時
2018/5/24 10:47:37
魔界の仮面弁士さま
>Connection / Command / DataReader に関しては、Using ブロックで囲った方が良いかも知れませ.ん。
Usingブロックに関して調べて囲ったほうがいいということはわかったのですがどのように囲えばいいでしょうか?
>これだと、OK ボタンを押さずに、画面右上の×で閉じた場合にも認証処理が通過してしまうのではありませんか?
最初のようにControlBoxをなくしボタンで終了するようにしました。
・指摘されたとこを修正後
Private Sub OK_Click(sender As Object, e As EventArgs) Handles OK.Click
Dim cnstr As String = "<接続文字列>"
Dim cn = New SqlConnection(cnstr)
cn.Open() ' 接続のオープン
Dim sqlQuery As String = "SELECT Password, 権限 FROM [dbo].[Table] WHERE ID = @Id.Text"
Dim cmd As New SqlCommand(sqlQuery, cn) ' コマンドの作成
Dim rd As SqlDataReader = cmd.ExecuteReader() ' コマンドの実行
Dim Pass As String
Dim Flag As String = "0"
If rd.Read() Then
Pass = rd.GetString("Password")
Flag = rd.GetString("権限")
End If
rd.Close()
cn.Close() ' 接続のクローズ
If Password.Text = Pass Then
MessageBox.Show("ユーザー名とパスワードを受け付けました。")
Me.Close()
Else
MessageBox.Show("認証できません。")
Id.Clear()
Password.Clear()
Username.Focus()
End If
End Sub
現状これを動かすと
Dim sqlQuery As String = "SELECT Password, 権限 FROM [dbo].[Table] WHERE ID = @Id.Text"
型 'System.Data.SqlClient.SqlException' のハンドルされていない例外が System.Data.dll で発生しました
追加情報:Must declare the scalar variable "@Username
Dim sqlQuery As String = "SELECT Password, 権限 FROM [dbo].[Table] WHERE ID = Id.Text"
型 'System.Data.SqlClient.SqlException' のハンドルされていない例外が System.Data.dll で発生しました
追加情報:The multi-part identifier "Id.Text" could not be bound.
となります