เงื่อนไขการ insert และ update database (จาก listview เข้า sql database)
Code (VB.NET)
For i = 0 To ListView1.Items.Count - 1
id = ListView1.Items(i).Text
MsgBox(id + "jcompile")
name = ListView1.Items(i).SubItems(1).Text
Con = New OleDb.OleDbConnection("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=rut;Data Source=192.168.1.112")
Sql = "select productid,productname from product"
Cmd = New OleDb.OleDbCommand(Sql, Con)
Con.Open()
Reader = Cmd.ExecuteReader()
While Reader.Read()
For Columns = 0 To Reader.FieldCount - 1
proid = Reader.Item(Columns).ToString
If proid = id Then
MsgBox(proid + "rut update") 'ตรงนี้เช็คได้ค่ะแต่ไม่รู้ว่าต้องเขียน sql อย่างไร
End If
Next
ComboRow += 1
End While
Con.Close()
Next
นี่คือตัวอย่าง code ค่ะ
Date :
2010-11-17 11:34:51
By :
เด็ก
รบกวนผู้รู้ช่วยตอบหน่อยนะค่ะ
ไม่ค่อยเก่งค่ะ
Date :
2010-11-17 12:35:22
By :
เด็ก
จากที่คุณโพสไว้ สุดท้ายแล้ว Database1(Table) = Database2(Table)
ถ้าต้องการอย่างนั้น ก็ลบ Database ที่ไม่ต้องการ แล้วใช้คำสั่ง Select Into ของ SQL ก็จะได้ตาราง 2 อันที่เหมือนกันแล้ว
คำสั่ง
ลบตาราง ใช้ Drop Table
Database หมายถึง ฐานข้อมูล ไม่ใช่ตาราง ระวังสับสน
Date :
2010-11-17 12:41:26
By :
base3000
จะทำในลักษณะ back up ข้อมูลค่ะ
database1 ข้อมูลจะเพิ่มเรื่อยๆ แล้วก็จะทำการ update ข้อมูลเข้า database2 คืออย่างที่บอกข้างบนค่ะว่า ถ้าใน database2 มีข้อมูลแล้วก็จะ update ข้อมูลแต่ถ้ายังก็จะ insert
Date :
2010-11-17 14:05:55
By :
เด็ก
จะ insert ข้อมูลที่ table นั้นๆ ก็ควรมี index หรือ key id ที่เป็นตัวบอกได้ว่าไม่ซ้ำถูกไม๊ครับ ก็ใช้วิธีการ check จา่ก id ตัวนั้นๆ ก่อนแล้วค่อยทำอะไรอย่างที่ต้องการน่ะครับ
แล้วนี่ใช้คำว่า database เลยเหรอ ตกลงว่าจะ backup ข้อมูลจาก table1 -> table2 อย่างนี้ หรือว่าจาก database A table1 -> database B table1 อย่างไหนครับ เพราะวิธีก็จะไม่เหมือนกันเนาะ
ถ้ากรณีเป็น table ลองดุเงื่อนไขแบบนี้ครับ
สมมุติข้อมูลคือ id 111 หลังจากกดปุ่ม save, submit หรืออะไรก็ตาม แล้วมันจะเริ่ม insert ให้
1. ตรวจสอบข้อมูลที่ table1 ก่อนว่ามีหรือเปล่า
ถ้าไม่มี -> insert ข้อมูลตามปกติ
ถ้ามี ->
insert ข้อมูลจาก table1 ไป table2 โดยใช้ id 111
ลบข้อมูล id 111 ที่ table1
insert ข้อมูลใหม่เข้าที่ table1 (ตรงขั้นตอน ลบ และ insert ใหม่นี่ อาจจะใช้เป็นการ update แทนก็ได้ครับแต่ผมชอบลบก่อนเฉยๆ)
2. ทำ trigger ฝังไว้ที่ database เลย ไม่ต้องเขียนโค้ดเพิ่มที่โปรแกรมเรา ทำที่ตัว table บน database แทน
ผลของวิธีนี้คือ table1 จะมีข้อมูลที่เป็น id 111 แค่ record เดียว, แถวเดียว, row เดียว แล้วแต่จะเรียก และเป็นข้อมูลล่าสุดเท่านั้น
table2 จะเป็น backup ของ table1 คือจะมี id 111 หลายๆ record
table1 = จำนวน record น้อย เวลา query เร็ว เหมาะแ่ก่การทำ report
table2 = จำนวน record เยอะ ต้องทำ index ดีๆ ไม่งั้น query จะยิ่งช้า (ปกติก็ช้าอยู่แล้วเพราะ record เยอะ)
หมดและ ก็ไม่รู้จะตรงกับที่ถามไม๊อ่ะ 555 ตอบซะยาวเลย
Date :
2010-11-17 14:28:17
By :
salapao_codeman
Load balance : Server 02