โดยนำไปปรับแก้ ให้เป็นเชื่อมต่อกับ MySQL และเป็น Window Application ครับ
อันนี้คือตัวอย่าง Function ExceuteNonQuery ที่ผมนำไปใช้ Query คำสั่ง INSERT ข้อมูลลง DB ครับ Code (VB.NET)
Public Function QueryExecuteNonQuery(ByVal strSQL As String) As Boolean
objConn = New MySqlConnection
With objConn
.ConnectionString = strConnString
.Open()
End With
Try
objCmd = New MySqlCommand
With objCmd
.Connection = objConn
.CommandType = CommandType.Text
.CommandText = strSQL
End With
objCmd.ExecuteNonQuery()
Return True '*** Return True ***'
Catch ex As Exception
Return False '*** Return False ***'
End Try
End Function
ส่วนวิธีการนำไปใช้งานของผมก็ประมาณนี้ครับ
Code (VB.NET)
Dim dbMySQL As New connectionMysql
Dim strSQLInsert As String
Loop--------
strSQLInsert = "INSERT INTO table VALUE .................."
dbMySQL.QueryExecuteNonQuery(strSQLInsert)
dbMySQL.Close()
EndLoop----------------
Code คร่าวๆจะประมาณนี้ครับ
ปรากฎว่าตอน Run โปรแกรม พบว่ามันทำการ insert ข้อมูลลง Server ได้ช้ามาก
เมื่อเทียบกับ
โปรแกรมอันเก่าที่ใช้การเชื่อมต่อ Database ที่ไม่ได้เป็น Class connection แบบข้างบน
ตัวอย่าง Code แบบเก่าครับ
Code (VB.NET)
Dim objConnMySql As MySqlConnection
Dim cmdMySql As MySqlCommand
Dim mysqlConnString As String
mysqlConnString = "Server=XXXXXX;User Id=root; Password=root; Database=db_test; Pooling=false; charset=utf8;"
objConnMySql = New MySqlConnection(mysqlConnString)
objConnMySql.Open()
Loop--------
strSQLInsert = "INSERT INTO table VALUE .................."
cmdMySql = New MySqlCommand(strSQLInsert, objConnMySql)
cmdMySql.ExecuteNonQuery()
EndLoop----------------
objConnMySql.Close()
ปรากฎว่า Code แบบหลัง ทำการเชื่อมต่อ Insert ข้อมูลลง Database บน Server ได้ไวกว่ามากๆ
เท่าที่ไล่ Code ดูทำให้ผมคิดว่า
น่าจะเป็นเพราะ การใช้ Function QueryExcecuteNonQuery()
มีการ New MySqlConnection ทุกครั้ง และ Open Connection ทุกครั้ง ที่ทำการ Loop (เช่น Loop 100 รอบ ก็ New Connection + Open Connection 100 รอบ )
แต่ Code แบบเก่าที่่ไม่ได้ใช้ class connection จะ New Connection และ Open Connection รอบเดียว ก่อนทำการ Loop
ผมจะแก้ไขอย่างไรดีครับให้การทำงานได้รวดเร็ว และมีการใช้ connection แบบเป็น Class
ช่วยแนะนำทีครับ
Tag : .NET, MySQL, Win (Windows App), VB.NET, VS 2008 (.NET 3.x)
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Public Class clsDatabase
Private objConn As SqlConnection
Private objCmd As SqlCommand
Private Trans As SqlTransaction
Private strConnString As String
Public Sub New()
strConnString = System.Configuration.ConfigurationSettings.AppSettings("ConnectionString")
objConn = New SqlConnection
With objConn
.ConnectionString = strConnString
.Open()
End With
End Sub
Public Function QueryExecuteNonQuery(ByVal strSQL As String) As Boolean
Try
objCmd = New SqlCommand
With objCmd
.Connection = objConn
.CommandType = CommandType.Text
.CommandText = strSQL
End With
objCmd.ExecuteNonQuery()
Return True '*** Return True ***'
Catch ex As Exception
Return False '*** Return False ***'
End Try
End Function
End Class