สงสัยมากๆ เกี่ยวกับ class connectDB เวลา Connect ตอนดึงข้อมูลเสร็จตรง Function จะปิดการ connect ให้เลยไหม
Code (VB.NET)
Public Class CConnect
Public Function SqlStrCon() As SqlConnection
Return New SqlConnection(Module1.strconn)
End Function
End Class
Public Class SqlGet
Public Function SqlGet(ByVal sql As String, ByVal MyData As String) As DataSet
Dim conn As SqlConnection = New CConnect().SqlStrCon()
Dim da As New SqlDataAdapter(sql, conn)
Dim ds As New DataSet()
da.Fill(ds, MyData)
Return ds
End Function
End Class
ตอน Return dataset เสร็จ Function จะปิด Connect ให้เลยไหมครับ หรือว่าต้องปิดเอง
Public Class SqlGet
Public Function SqlGet(ByVal sql As String, ByVal MyData As String) As DataSet
Dim conn As SqlConnection = New SqlConnection(Module1.strconn)
Dim da As New SqlDataAdapter(sql, conn)
Dim ds As New DataSet()
da.Fill(ds, MyData)
conn.Close
Return ds
End Function
End Class
As DataSet สามารถออกเป็น As Datatable เพื่อความหลากหลายในการใช้งานครับ
Public Function SqlGet(ByVal sql As String, ByVal MyData As String) As DataSet
Dim ds As New DataSet()
Using conn As New SqlConnection(Module1.strconn)
da.Fill(ds, New SqlDataAdapter(sql, conn))
End Using
Return ds
End Function
อึม!! ข้อแตกต่างที่ผมหมายถึงคือระหว่าง Class กับ module มันต่างกันยังไงบ้างเช่น module ไม่ต้อง New เรียกได้เลย
module จองพื้นที่ Class ไม่จองพื้นที่ไรประมาณนี้ครับ
Imports System.Data.SqlClient
Imports System.Data
Friend NotInheritable Class clsDatabase
Public Shared Function SqlGet(ByVal sql As String, ByVal strconn As String) As DataSet
'อะไรก็ว่าไป
End Function
End Class
Code (VB.NET)
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataSet ds = clsDatabase.SqlGet("Select tuna 555", "Connstring")
End Sub
End Class
ความจริง VB.NETไม่เหมือน C# ไว้ใน module ก็ได้ครับไม่จำเป็นต้องใส่ใน class หร่อก
ปล. method มันอยู่ใน class นะท่าน ถ้าเราไม่เรียกใช้ class ก่อน จะเรียกใช้ method ใน class ได้ยังไงรึ
ขนาดผมประกาศแบบ Friend NotInheritable Class และ ใช้ Public Shared Function เป็น method
เวลาใช้ยังต้องเรียกแบบ
Imports System.Data.SqlClient
Module Module1
<System.Runtime.CompilerServices.Extension()> _
Public Function SqlGet(ByVal sql As String, ByVal strconn As String) As DataTable
Dim dt As New DataTable
Using cnn As New SqlConnection(strconn)
cnn.Open()
Using dad As New SqlDataAdapter(sql, cnn)
dad.Fill(dt)
End Using
cnn.Close()
End Using
Return dt
End Function
End Module
Code (VB.NET)
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As DataTable = "Select Tuna 555".SqlGet("ConnString")
End Sub
End Class