my2alee โพสต์ 2023-4-28 11:31:23

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

thongkorn โพสต์ 2023-4-30 14:00:47

- 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:30:49

แก้ไขครั้งสุดท้ายโดย 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 เวอร์ชั่น

thongkorn โพสต์ 2023-5-1 13:00:31

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:31:09

แก้ไขครั้งสุดท้ายโดย my2alee เมื่อ 2023-5-1 14:32

thongkorn ตอบกลับเมื่อ 2023-5-1 13:00
ไม่น่าจะเกี่ยวกับ Framework หรอกครับ ผมทดสอบโค้ดก็โอเค .. ...
ครับ ตามเม้นบนครับ

thongkorn โพสต์ 2023-5-2 10:56:37

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 ครับผม

my2alee โพสต์ 2023-5-2 15:39:42

thongkorn ตอบกลับเมื่อ 2023-5-2 10:56
ไม่รู้ว่าได้หรือยังน่ะครับ แต่โค้ดที่ให้ผมมาดู และ ...

Ping เจอครับ อ.

thongkorn โพสต์ 2023-5-2 18:26:17

my2alee ตอบกลับเมื่อ 2023-5-2 15:39
Ping เจอครับ อ.

ก็เหลือเช็คการทำงานของ MySQL Server ตัวที่ 2 แล้วล่ะครับ

my2alee โพสต์ 2023-5-3 12:26:04

thongkorn ตอบกลับเมื่อ 2023-5-2 18:26
ก็เหลือเช็คการทำงานของ MySQL Server ตัวที่ 2 แล้วล่ะครับ

ลองเอาโปรแกรมไปให้เพื่อนๆที่ รพ อื่นๆ ไปใช้ ก็เหมือนกันครับ ถ้าเป็น Cnetos8.x+mariadb10.10.x
หน้า: [1]
ดูในรูปแบบกติ: vb.net - เชื่อมต่อฐานข้อมูลไม่ได้ MySQL