vb.net - เชื่อมต่อฐานข้อมูลไม่ได้ MySQL
แก้ไขครั้งสุดท้ายโดย my2alee เมื่อ 2023-4-28 11:32เครื่อง Server 1 + CentOS7.x + mysql mariadb10.1.x
เครื่อง Server 2 + CentOS8.x + mysql mariadb10.10.x
ผมเขียนโปรแกรมเชื่่อมต่อกับฐานข้อมูล กับ Server 1 ทุกอย่างทำงานปกติครับ
แต่ พอสลับมาเครื่อง Server 2 กับใช้ไม่ได้ พยายายหาวิธีแก้ปัญหามาพอสมควรครับ
รบกวนสอบถาม มันฟ้อง error ตามนี้ครับ
ปล.ผมใช้ V.2013 ลองบน 2022 ก็ไม่ได้ฟ้องเหมือนกัน
"Object cannot be cast from DBNull to other types"
'call Function
ccDataStrxx("select hospcode from hospcode where hospcode='" & HOSP_CODE & "'")
ส่วนโค้ดที่เกี่ยวข้องครับ
ปล.มือใหม่
'Connection DB
Public Function strconDb() As MySqlConnection
LoadDataSetIniSetting() 'call function load file ini
'variable connect database from .ini
Dim strVarConn As String = "server=" & IP_DB & ";user id=" & USER_DB & ";password=" & PWD_DB & ";database=" & NAME_DB
Return New MySqlConnection(strVarConn) 'return
End Function
Public strcon As MySqlConnection = strconDb() 'connection
Public dbGetValuex As String 'field name get data
'Function Read Data
Public Sub ccDataStrxx(ByVal sql As String)
Try
cmd.Connection = strcon
cmd.CommandText = sql
strcon.Open() '<<<<<<<<<<< ถึงบรรทัดนี้ครับ จะแจ้ง error <<<<<<<<<<<<<<<<<
dbread = cmd.ExecuteReader()
If dbread.HasRows Then
dbread.Read()
dbGetValuex = dbread.GetValue(0).ToString()
Else
dbGetValuex = ""
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
strcon.Close()
End Try
End Sub
- strCon.Open เกิด Error เพราะหา Server ไม่เจอครับ
Public Sub ccDataStrxx(ByVal sql As String)
Dim cmd As New MySqlCommand
Try
If strcon.State = ConnectionState.Closed Then strcon.Open()
cmd.Connection = strcon
cmd.CommandText = sql
Dim dbread As MySqlDataReader = cmd.ExecuteReader
If dbread.HasRows Then
dbread.Read()
dbGetValuex = dbread.GetValue(0).ToString()
Else
dbGetValuex = ""
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
strcon.Close()
End Try
End Sub
แก้ไขครั้งสุดท้ายโดย my2alee เมื่อ 2023-5-1 10:39
thongkorn ตอบกลับเมื่อ 2023-4-30 14:00
- strCon.Open เกิด Error เพราะหา Server ไม่เจอครับ
ทดสอบกับ VB6 ได้ทั้ง 2 Server ครับ อ.
ถ้า .netServer 1 ได้ แต่กับ 2 ไม่ได้
ปรับโค้ดตาม อ. แล้วก็ยังเหมือนเดิมครับ
ผมไม่แน่ใจว่าอยู่ที่ การตั้งค่า my.cnf ของ mysql หรือเปล่า
หรือว่า .net framwork เวอร์ชั่น
my2alee ตอบกลับเมื่อ 2023-5-1 10:30
ทดสอบกับ VB6 ได้ทั้ง 2 Server ครับ อ.
ถ้า .netServer 1 ได้ แต่กับ ...
ไม่น่าจะเกี่ยวกับ Framework หรอกครับ ผมทดสอบโค้ดก็โอเค ... ไม่รู้ว่าใช้ Debugger เป็นหรือเปล่า จากภาพให้เลื่อนเคอร์เซอร์ไปอยู่ในแถวที่เราต้องการทดสอบ แล้วกด Ctrl + F8 หรือ Run to Cursor (หรือคลิ๊กเมาส์ขวาก็จะเห็น) มันจะหยุดการทำงานในแถวที่เราต้องการ จากนั้นเคลื่อนเมาส์ไปที่ตัวแปร strVarConn เพื่อดูแพทเทิร์นของมันครับ ... (การใช้ปุ่มฟังค์ชั่นในการทำ Debugger ต้องดูเวอร์ชั่น Visual Studio ด้วยครับ)
แก้ไขครั้งสุดท้ายโดย my2alee เมื่อ 2023-5-1 14:32
thongkorn ตอบกลับเมื่อ 2023-5-1 13:00
ไม่น่าจะเกี่ยวกับ Framework หรอกครับ ผมทดสอบโค้ดก็โอเค .. ...
ครับ ตามเม้นบนครับ my2alee ตอบกลับเมื่อ 2023-5-1 14:31
ครับ ตามเม้นบนครับ
ไม่รู้ว่าได้หรือยังน่ะครับ แต่โค้ดที่ให้ผมมาดู และผมได้แก้ไขโค้ดให้บางส่วนทำงานได้อย่างถูกต้อง เช็คก่อนว่าติดต่อกับ Server อีกตัวได้หรือเปล่า ในภาพประกอบผมเชื่อมต่อ MySQL Server กับ Local Host (192.168.1.11) คือเครื่องตัวมันเอง และอีกเครื่องที่ผมแยกไปทำเป็น MySQL Server ไว้ครับ โดยฟิกไอพี 192.168.1.22 โดยทั้ง 2 เครื่องรันบน Windows 10 และ MySQL Server 5.7.17 ครับผม
thongkorn ตอบกลับเมื่อ 2023-5-2 10:56
ไม่รู้ว่าได้หรือยังน่ะครับ แต่โค้ดที่ให้ผมมาดู และ ...
Ping เจอครับ อ.
my2alee ตอบกลับเมื่อ 2023-5-2 15:39
Ping เจอครับ อ.
ก็เหลือเช็คการทำงานของ MySQL Server ตัวที่ 2 แล้วล่ะครับ thongkorn ตอบกลับเมื่อ 2023-5-2 18:26
ก็เหลือเช็คการทำงานของ MySQL Server ตัวที่ 2 แล้วล่ะครับ
ลองเอาโปรแกรมไปให้เพื่อนๆที่ รพ อื่นๆ ไปใช้ ก็เหมือนกันครับ ถ้าเป็น Cnetos8.x+mariadb10.10.x
หน้า:
[1]