error เกิดข้อผิดพลาดในการเชื่อมต่อฐานข้อมูลค่ะ error dr = Com.ExecuteReader ต้องแก้ไขยังไงค่ะ รบกวนช่วยแนะนำหน่อยค่ะ
เพราะว่ารันในเครื่องอื่นได้ แต่รรันในเครื่องของเรารันไม่ได้ติดปัญหา dr = Com.ExecuteReader
Code (VB.NET)
Imports System.IO 'เนมสเปซกลุ่มออบเจ็กต์ IO
Imports System.Text 'เนมสเปซของออบเจ็กต์ StringBuilder
Imports System.Data.OleDb 'เนมสเปซกลุ่มออบเจ็กต์ OleDb
Imports System.Security.Cryptography
Public Class frmLogin
Dim conn As New OleDbConnection() 'ตัวแปรออบเจ็กต์ OleDbConnection
Dim Invalid As Integer = 0 'ตัวแปร Invalid เก็บจำนวนครั้งที่ Login ผิด
Dim TmpRowsAffected As Long = 0 'ตัวแปร TmpRowsAffected เก็บแถวที่มีผลกระทบ
Dim tmpUserName As String 'ตัวแปร tmpUserName เก็บ Username ชั่วคราว
Dim xmlFilePhat As String = "C:\\UserLogFile.xml" 'ตัวแปร xmlFilePhat ที่เก็บ File .xml
Dim isfind As Boolean = False 'ตัวแปร isfind ตรวจสอบการกำหนดสถานะ
Private Sub LoginForm1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strconn As String 'ตัวแปรเก็บข้อความเชื่อมต่อกับฐานข้อมูล
strconn = ConnectDB.StrConn 'อ่านข้อความเชื่อมต่อกับฐานข้อมูลจากคลาส ConnectDb
With conn 'เริ่มเชื่อมต่อกับฐานข้อมูล
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strconn
.Open() 'เชื่อมต่อกับฐานข้อมูล
End With
'MyNewSub() 'กำหนดให้ฟอร์มใส
'clear textbox
txtUsername.Focus()
txtUsername.Text = ""
txtPassword.Text = ""
txtUserLogin.Hide()
txtLevels_id.Hide()
End Sub
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OK.Click
'OK botton login เข้าสู่ระบบ
Dim sb As New StringBuilder() 'ตัวแปรออบเจกต์ StringBuilder ที่ชื่อว่า sb
Dim tmpPassword As String
If txtUsername.Text = "" Or txtPassword.Text = "" Then 'เช็ดค่าว่างใน textbox
MessageBox.Show("กรุณากรอกชื่อ และ รหัสผ่านด้วยค่ะ", "แจ้งเตือนจากระบบ", MessageBoxButtons.OK, MessageBoxIcon.Error)
txtUsername.Focus()
Exit Sub
End If
'ทำการเลือกข้อมูลจากตาราง Committee
sb.Append("SELECT [Committee_id], [Pass] FROM [Committee]")
sb.Append("WHERE ([Committee_id]=@Committee_id)")
sb.Append("AND ([Pass]=@Pass)")
sb.Append("AND ([IsNormal]='1')") 'ใช้งานได้ตามปกติ
Dim Username As New OleDbParameter("@Committee_id", OleDbType.VarChar)
Dim Password As New OleDbParameter("@Pass", OleDbType.VarChar)
Dim sqlLogin As String 'สร้างชุดคำสั่ง sqlLogin เก็บคำสั่ง sql
sqlLogin = sb.ToString()
Dim Com As New OleDbCommand() 'ตัวแปรออบเจ็กต์ OleDbCommand
Dim dr As OleDbDataReader 'ตัวแปรออบเจ็กต์ OleDbDataReader
tmpPassword = MD5(txtPassword.Text)
txtPassword.Text = tmpPassword
With Com
.CommandType = CommandType.Text
.CommandText = sqlLogin 'ใช้ชุดคำสั่ง sqlLogin
.Connection = conn 'เชื่อมต่อฐานข้อมูล
.Parameters.Clear()
.Parameters.Add(Username).Value = txtUsername.Text 'ตรวจสอบชื่อผู้ใช้งาน
.Parameters.Add(Password).Value = txtPassword.Text 'ตรวจสอบรหัสผ่าน
dr = Com.ExecuteReader 'error ตรงบรรทัดนี้ค่ะ
If dr.HasRows Then 'กรณีพบข้อมูล
isfind = True 'กำหนดสถานะเป็น True
Invalid = 0 'จำนวนครั้งที่ Login ผิด เท่ากับ 0
Call CheckUserLogin() 'เรียกซับรูทีน CheckUserLogin() ทำงาน
MessageBox.Show("ยินดีต้อนรับคุณ: " & txtUserLogin.Text & " เข้าสู่ระบบค่ะ", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
Call WriteLogFile1() 'เรียกซับรูทีน writelogfile1() ทำงาน
txtUsername.Text = ""
txtPassword.Text = ""
Dim fMain As New frmmain
fMain.Show() 'ทำการเปิด frmMain()
Me.Hide()
tmpUserName = txtUsername.Text
Else 'กรณีไม่พบข้อมูล
isfind = False 'กำหนดสถานะเป็น False
WriteLogFile() 'เรียกซับรูทีน writelogfile() ทำงาน
If Invalid = 3 Then
UpdateInvalidUser() 'เรียกซับรูทีน UpdateinvalidUser() ทำงาน
If TmpRowsAffected <> 0 Then
MessageBox.Show("ชื่อผู้ใช้งานนี้ไม่สามารถใช้งานได้ชั่วคราว กรุณาติดต่อ: ผู้ดูแลระบบค่ะ", "แจ้งเตือนจากระบบ", MessageBoxButtons.OK, MessageBoxIcon.Error)
txtUsername.Text = ""
txtPassword.Text = ""
txtUsername.Focus()
Invalid = 0 'จำนวนครั้งที่ Login ผิด เท่ากับ 0
Exit Sub
End If
End If
MessageBox.Show("ไม่มีผู้ใช้งานนี้ในระบบค่ะ", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
txtUsername.Text = ""
txtPassword.Text = ""
txtUsername.Focus()
End If
End With
End Sub