(asp.net (vb) , MS Sql server 2008, Microsoft visual studio )
แล้วเวลาที่ทำหน้าเพิ่มข้อมูลของหนังสือ
พบว่าจำเป็นจะต้องใช้ตัวอักษร อัญประกาศ หรือ sigle quot
อย่างเช่น คำว่า I'm making a difference จะใช้ replace ก็คงไม่เหมาะ
เคย search เจอที่เค้าแนะนำให้ใช้การ Insert ข้อมูลแบบ Parameters
ก็เลยเอามาใช้ แต่ก็ยังไม่รู้จนถึงตอนนี้ว่า ใช้วิธีใหนดีที่สุด
แปะโค๊ดเอาไว้ก่อนละกัน
Try
Dim strSql As String
strSql = "Insert Into elib_media(id,isbn,name,author,publisher,edition,years,pages,description,quantity,nameunit,id_mediatype,id_mediacategory,date_add)"
strSql += " Values(@Para1,@Para2,@Para3,@Para4,@Para5,@Para6,@Para7,@Para8,@Para9,@Para10,@Para11,@Para12,@Para13,@Para14)"
Dim cmd As New SqlCommand(strSql, conn)
cmd.Parameters.AddWithValue("@Para1", maxid)
cmd.Parameters.AddWithValue("@Para2", Trim(txtisbn.Text))
cmd.Parameters.AddWithValue("@Para3", Trim(txtname.Text))
cmd.Parameters.AddWithValue("@Para4", Trim(txtauthor.Text))
cmd.Parameters.AddWithValue("@Para5", Trim(txtpublisher.Text))
cmd.Parameters.AddWithValue("@Para6", Trim(txtedition.Text))
cmd.Parameters.AddWithValue("@Para7", Trim(txtyear.Text))
cmd.Parameters.AddWithValue("@Para8", Trim(txtpages.Text))
cmd.Parameters.AddWithValue("@Para9", Trim(txtdetail.Text))
cmd.Parameters.AddWithValue("@Para10", Trim(txtquantity.Text))
cmd.Parameters.AddWithValue("@Para11", Trim(txtnameunit.Text))
cmd.Parameters.AddWithValue("@Para12", Trim(ddltype.SelectedValue))
cmd.Parameters.AddWithValue("@Para13", Trim(ddlcate.SelectedValue))
cmd.Parameters.AddWithValue("@Para14", dateAdd)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
Catch ex As Exception
If conn.State = ConnectionState.Open Then
conn.Close()
End If
Exit Sub
End Try
มาแปะไว้ก่อนค่ะ บล็อกน่าสนใจมากเลยค่ะ
ReplyDeleteขอลิงค์ติดตามล่ะกันนะ
แนะนำให้ใช้แบบ Parameter ดีกว่้าครับ ข้อดีคือ
ReplyDelete1. ป้องกัน SQLInjection ได้อย่างกรณีที่น้องฝ้ายเจอปัญหาน่ะละครับ
2. ความเร็วในการทำงาน กรณีที่ต้องมีการบันทึกหลายๆรายการ (วนลูปเพื่อบันทึกลงตาราง) เพราะ แบบ Parameter นั้นตัว Database สามารถทำ Cache SQL statement ได้ (น่าจะทำได้เกือบทุกตัวแล้วมั้งตอนนี้)
3. การทำ Biding Parameter นั้นจะได้ Performance ที่ดีนั้นอยู่ที่การใช้ด้วยครับ
เท่าที่รู้ก็เท่านี้ครับ ส่วนข้ออื่นๆรอท่านอื่นมาตอบละกัน
ป.ล หากเป็น Java ละก็จะเรียกว่า PrepareStatement ซึ่งการใช้งานก็ไม่ต่างกันมาก แต่ Java ทำ Batch ได้ ไม่รู้ว่าทาง .net ทำอย่างไง
ขอบคุณทั้งสองความคิดเห็นนะคะ
ReplyDelete