ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 2995|ตอบกลับ: 8

vb.net - เชื่อมต่อฐานข้อมูลไม่ได้ MySQL

[คัดลอกลิงก์]

13

กระทู้

46

โพสต์

327

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
327

แก้ไขครั้งสุดท้ายโดย 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

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
โพสต์ 2023-4-30 14:00:47 | ดูโพสต์ทั้งหมด

- 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
คัดลอกไปที่คลิปบอร์ด
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

13

กระทู้

46

โพสต์

327

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
327
 เจ้าของ| โพสต์ 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 ครับ อ.
ถ้า .net  Server 1 ได้ แต่กับ 2 ไม่ได้

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

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
โพสต์ 2023-5-1 13:00:31 | ดูโพสต์ทั้งหมด

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
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

13

กระทู้

46

โพสต์

327

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
327
 เจ้าของ| โพสต์ 2023-5-1 14:31:09 | ดูโพสต์ทั้งหมด

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

ครับ ตามเม้นบนครับ

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
โพสต์ 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 ครับผม
MySQL.jpg
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

13

กระทู้

46

โพสต์

327

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
327
 เจ้าของ| โพสต์ 2023-5-2 15:39:42 | ดูโพสต์ทั้งหมด

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

Ping เจอครับ อ.

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
โพสต์ 2023-5-2 18:26:17 | ดูโพสต์ทั้งหมด


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

13

กระทู้

46

โพสต์

327

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
327
 เจ้าของ| โพสต์ 2023-5-3 12:26:04 | ดูโพสต์ทั้งหมด

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

ลองเอาโปรแกรมไปให้เพื่อนๆที่ รพ อื่นๆ ไปใช้ ก็เหมือนกันครับ ถ้าเป็น Cnetos8.x+mariadb10.10.x
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-11-27 21:42 , Processed in 0.284343 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้