ลงชื่อเข้าใช้
กระดานข่าว VB > เว็บบอร์ดถามตอบปัญหา
ส่ง|
ดู2624|โพสต์8|บุ๊คมาร์ก
แก้ไขครั้งสุดท้ายโดย 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 ไม่เจอครับ

โค้ด:

  1.     Public Sub ccDataStrxx(ByVal sql As String)
  2.         Dim cmd As New MySqlCommand
  3.         Try
  4.             If strcon.State = ConnectionState.Closed Then strcon.Open()
  5.             cmd.Connection = strcon
  6.             cmd.CommandText = sql
  7.             Dim dbread As MySqlDataReader = cmd.ExecuteReader
  8.             If dbread.HasRows Then
  9.                 dbread.Read()
  10.                 dbGetValuex = dbread.GetValue(0).ToString()
  11.             Else
  12.                 dbGetValuex = ""
  13.             End If
  14.         Catch ex As Exception
  15.             MessageBox.Show(ex.Message)
  16.         Finally
  17.             strcon.Close()
  18.         End Try
  19.     End Sub
แก้ไขครั้งสุดท้ายโดย my2alee เมื่อ 2023-5-1 10:39

อ้างอิง:

thongkorn ตอบกลับเมื่อ 2023-4-30 14:00
- strCon.Open เกิด Error เพราะหา Server ไม่เจอครับ

ทดสอบกับ VB6 ได้ทั้ง 2 Server ครับ อ.
ถ้า .net  Server 1 ได้ แต่กับ 2 ไม่ได้

ปรับโค้ดตาม อ. แล้วก็ยังเหมือนเดิมครับ
ผมไม่แน่ใจว่าอยู่ที่ การตั้งค่า my.cnf ของ mysql หรือเปล่า
หรือว่า .net framwork เวอร์ชั่น

อ้างอิง:

my2alee ตอบกลับเมื่อ 2023-5-1 10:30
ทดสอบกับ VB6 ได้ทั้ง 2 Server ครับ อ.
ถ้า .net  Server 1 ได้ แต่กับ ...

ไม่น่าจะเกี่ยวกับ Framework หรอกครับ ผมทดสอบโค้ดก็โอเค ... ไม่รู้ว่าใช้ Debugger เป็นหรือเปล่า จากภาพให้เลื่อนเคอร์เซอร์ไปอยู่ในแถวที่เราต้องการทดสอบ แล้วกด Ctrl + F8 หรือ Run to Cursor (หรือคลิ๊กเมาส์ขวาก็จะเห็น) มันจะหยุดการทำงานในแถวที่เราต้องการ จากนั้นเคลื่อนเมาส์ไปที่ตัวแปร strVarConn เพื่อดูแพทเทิร์นของมันครับ ... (การใช้ปุ่มฟังค์ชั่นในการทำ Debugger ต้องดูเวอร์ชั่น Visual Studio ด้วยครับ)
รายการไฟล์แนบ
Debugger.jpg (2023-5-1 13:00 อัปโหลด)

ขนาดต้นฉบับ 291.29 KB, ดาวน์โหลดแล้ว: 662

Debugger.jpg

แก้ไขครั้งสุดท้ายโดย 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 ครับผม
รายการไฟล์แนบ
MySQL.jpg (2023-5-2 10:56 อัปโหลด)

ขนาดต้นฉบับ 378.21 KB, ดาวน์โหลดแล้ว: 659

MySQL.jpg

อ้างอิง:

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

G2GNet.com

Powered by Discuz! X3.4

โฮมเพจ|รูปแบบทั่วไป|รูปแบบโมเดิร์น|รูปแบบคอมพิวเตอร์