Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > .NET Framework > Forum > ต้องการบันทึกข้อมูลจาก DataGridView ลงฐานข้อมูล Database หลาย ๆ แถวพร้อมกัน ครับ


 

[.NET] ต้องการบันทึกข้อมูลจาก DataGridView ลงฐานข้อมูล Database หลาย ๆ แถวพร้อมกัน ครับ

 
Topic : 065762



โพสกระทู้ ( 4 )
บทความ ( 0 )



สถานะออฟไลน์



ต้องการบันทึกข้อมูลจาก Datagrid ลงฐานข้อมูลหลายๆแถวพร้อมกัน ครับ

code Vb.net

Code (VB.NET)
01.Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
02.        
03.        strsql = "insert into OrderDetail(OrderID,ProductID,NumberOrder,UnitID,Weight,UnitWeightID,Driver,RegisDriver) values(@OrderId,@ProductID,@ProductName,@NumberOrder,@UnitID,@Weight,@UnitWeightID,@Driver,@RegisDriver)"
04.        objCmd = New System.Data.SqlClient.SqlCommand(strsql, DbConn)
05.        For i As Integer = 0 To DataGridOrder.RowCount - 1
06.            If Not DataGridOrder.Rows(i).IsNewRow Then
07.                With objCmd
08.                    .Parameters.Add(New SqlParameter("@OrderId", orderID.Text))
09.                    .Parameters.Add(New SqlParameter("@ProductID", DataGridOrder.Rows(i).Cells(0).Value))
10.                    .Parameters.Add(New SqlParameter("@NumberOrder", DataGridOrder.Rows(i).Cells(1).Value))
11.                    .Parameters.Add(New SqlParameter("@UnitId", DataGridOrder.Rows(i).Cells(2).Value))
12.                    .Parameters.Add(New SqlParameter("@Weight", DataGridOrder.Rows(i).Cells(3).Value))
13.                    .Parameters.Add(New SqlParameter("@UnitWeightID", DataGridOrder.Rows(i).Cells(4).Value))
14.                    .Parameters.Add(New SqlParameter("@Driver", Driver.Text))
15.                    .Parameters.Add(New SqlParameter("@RegisDriver", RegisDriver.Text))
16.                End With
17.            End If
18.        Next
19.        objCmd.ExecuteNonQuery()
20.        MessageBox.Show("บันทึกข้อมูลแล้ว")
21.        DbConn.Close()
22.        DataGridOrder.Rows.Clear()
23.    End Sub


มันสามารถเพิ่มได้แค่ทีละแถว ถ้าเพิ่มข้อมูล 2 แถวมันจะ Error

Code
The variable name '@OrderId' has already been declared. Variable names must be unique within a query batch or stored procedure.


ฐานข้อมูล Sql Server 2008
table orderDetail
OrderID ---PK
ProductID ---PK
NumberOrder
UnitID
Weight
UnitWeight
Driver
RegisDriver

จะเขียนเพิ่มยังไงให้สามารถ บันทึกจาก DataGrid ได้หลายๆแถวครับ



Tag : .NET, Ms SQL Server 2008, Win (Windows App), VB.NET, VS 2010 (.NET 4.x)

Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-09-01 17:07:31 By : sniper View : 17089 Reply : 13
 

 

No. 1



โพสกระทู้ ( 227 )
บทความ ( 0 )



สถานะออฟไลน์


เอา objCmd.ExecuteNonQuery() ไปไว้ข้างใน For ป่ะผมคิดว่าตรงนี้นะ เอาไว้ก่อน Next


ประวัติการแก้ไข
2011-09-01 18:08:50
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-01 18:07:47 By : Cyg
 

 

No. 2



โพสกระทู้ ( 74,059 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

คือมันซ้ำน่ะครับ คุณส่ง Parameter ซ้ำครับ เพราะ Loop มันส่งซ้ำ ๆ หรือไม่ก็ให้ Clear หรือไม่ก็ New ใหม่ครับ

Code (VB.NET)
1.objCmd.Parameters.Clear()


Code (VB.NET)
01.Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
02.        
03.        strsql = "insert into OrderDetail(OrderID,ProductID,NumberOrder,UnitID,Weight,UnitWeightID,Driver,RegisDriver) values(@OrderId,@ProductID,@ProductName,@NumberOrder,@UnitID,@Weight,@UnitWeightID,@Driver,@RegisDriver)"
04.        objCmd = New System.Data.SqlClient.SqlCommand(strsql, DbConn)
05.        For i As Integer = 0 To DataGridOrder.RowCount - 1
06.            If Not DataGridOrder.Rows(i).IsNewRow Then
07.                With objCmd
08.                    .Parameters.Add(New SqlParameter("@OrderId", orderID.Text))
09.                    .Parameters.Add(New SqlParameter("@ProductID", DataGridOrder.Rows(i).Cells(0).Value))
10.                    .Parameters.Add(New SqlParameter("@NumberOrder", DataGridOrder.Rows(i).Cells(1).Value))
11.                    .Parameters.Add(New SqlParameter("@UnitId", DataGridOrder.Rows(i).Cells(2).Value))
12.                    .Parameters.Add(New SqlParameter("@Weight", DataGridOrder.Rows(i).Cells(3).Value))
13.                    .Parameters.Add(New SqlParameter("@UnitWeightID", DataGridOrder.Rows(i).Cells(4).Value))
14.                    .Parameters.Add(New SqlParameter("@Driver", Driver.Text))
15.                    .Parameters.Add(New SqlParameter("@RegisDriver", RegisDriver.Text))
16.                End With
17.        objCmd.ExecuteNonQuery()
18.        objCmd.Parameters.Clear()
19.            End If
20.        Next
21.         
22.        MessageBox.Show("บันทึกข้อมูลแล้ว")
23.        DbConn.Close()
24.End Sub


หรือ

Code (VB.NET)
01.Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
02.        
03.        strsql = "insert into OrderDetail(OrderID,ProductID,NumberOrder,UnitID,Weight,UnitWeightID,Driver,RegisDriver) values(@OrderId,@ProductID,@ProductName,@NumberOrder,@UnitID,@Weight,@UnitWeightID,@Driver,@RegisDriver)"
04.         
05.        For i As Integer = 0 To DataGridOrder.RowCount - 1
06.            If Not DataGridOrder.Rows(i).IsNewRow Then
07.        objCmd = New System.Data.SqlClient.SqlCommand(strsql, DbConn)
08.                With objCmd
09.                    .Parameters.Add(New SqlParameter("@OrderId", orderID.Text))
10.                    .Parameters.Add(New SqlParameter("@ProductID", DataGridOrder.Rows(i).Cells(0).Value))
11.                    .Parameters.Add(New SqlParameter("@NumberOrder", DataGridOrder.Rows(i).Cells(1).Value))
12.                    .Parameters.Add(New SqlParameter("@UnitId", DataGridOrder.Rows(i).Cells(2).Value))
13.                    .Parameters.Add(New SqlParameter("@Weight", DataGridOrder.Rows(i).Cells(3).Value))
14.                    .Parameters.Add(New SqlParameter("@UnitWeightID", DataGridOrder.Rows(i).Cells(4).Value))
15.                    .Parameters.Add(New SqlParameter("@Driver", Driver.Text))
16.                    .Parameters.Add(New SqlParameter("@RegisDriver", RegisDriver.Text))
17.                End With
18.        objCmd.ExecuteNonQuery()
19.            End If
20.        Next
21.         
22.        MessageBox.Show("บันทึกข้อมูลแล้ว")
23.        DbConn.Close()
24.        DataGridOrder.Rows.Clear()
25.    End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-01 21:24:26 By : webmaster
 

 

No. 3



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

รบกวนถามนิดนึงนะคะว่า ก่อนที่จะเขียน code ด้านบนเนี่ย ต้องทำฐานข้อมูล แล้วก็สร้าง table ขึ้นมารองรับก่อนรึเปล่าคะ หรือว่าพอพิมคำสั่ง ด้านบนแล้ว มันจะสร้าง table ให้เลยคะ ??
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-07 11:29:06 By : nUnGnInG_ReScUe
 

 

No. 4



โพสกระทู้ ( 26 )
บทความ ( 0 )



สถานะออฟไลน์


คำสั่ง insert เป็นการเพิ่มข้อมูลลงฐานข้อมูล
ถ้าไม่มีฐานข้อมูลจะเพิ่มยังไงหว่า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-07 11:37:54 By : m
 

 

No. 5



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

แหะๆ ขอบคุณค่ะ ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-07 14:37:55 By : nUnGnInG_ReScUe
 

 

No. 6

Guest


ขอบคุณมากครับ ผม อ่านแล้วเอามาประยุต ใช้ ได้ผล และได้ความรู้มากมายครับ ขอบคุณทุกท่าน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-29 10:45:56 By : โปรแกรมเมอร์ มือสมัครเล่น
 

 

No. 7

Guest


*****

รบกวนถามนิดนึงนะคะว่า ก่อนที่จะเขียน code ด้านบนเนี่ย ต้องทำฐานข้อมูล แล้วก็สร้าง table ขึ้นมารองรับก่อนรึเปล่าคะ หรือว่าพอพิมคำสั่ง ด้านบนแล้ว มันจะสร้าง table ให้เลยคะ ??


*****


โดยทั่วฯไป เราจะเห็น SourceCode ประกอบเพื่อให้เข้าใจ และใช้งานจริงฯ ไม่ได้ มันเป็นอย่างนี้จริงฯ 1, 2, 3, 4, 5, ..., Infinity

แต่คำถามนี้มันกลับกัน Infinity, ..., 5, 4, 3, 2, 1 มันทำได้ครับ และใช้งานได้จริงฯ และถูกต้องเสมอ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-29 11:33:48 By : ผ่านมา
 

 

No. 8

Guest


แหะๆ ขอบคุณค่ะ ^^

หนู ถาม/โดยเข้า/ไม่เข้าใจ มันเป็นสิ่งที่ถูกต้องแล้วครับ และผมก็ยึดแนวทางแบบนี้

จริงฯแล้วมันคือ Dynamic Table/Field
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-29 11:41:18 By : ผ่านมา
 

 

No. 9

Guest


ช่วยดูให้หน่อยได้ไหมค่ะ พอรันแล้วมันบอกว่า คุณละเมิดข้อจำกัด คีย์หลัก อยากรู้ว่ามันเปนเพราะอะไรค่ะ


Code (VB.NET)
01.If myCon.State = ConnectionState.Open Then
02.            myCon.Close()
03.        End If
04.        myCon.ConnectionString = strConn
05.        myCon.Open()
06.        strSql = "Insert Into  employees (emp_id,emp_name,emp_address,emp_phone,emp_gender,Status,Username,Password) values(@id,@emp_name,@emp_address,@emp_phone,@emp_gender,@Status,@Username,@Password)"
07.        objCmd = New System.Data.SqlClient.SqlCommand(strSql, myCon)
08. 
09.        For i As Integer = 0 To dgvEmp.RowCount - 1
10.            If Not dgvEmp.Rows(i).IsNewRow Then
11.                objCmd = New System.Data.SqlClient.SqlCommand(strSql, myCon)
12. 
13.                With objCmd
14.                    .Parameters.Add(New SqlParameter("@id", txtId.Text))
15.                    .Parameters.Add(New SqlParameter("@emp_name", dgvEmp.Rows(i).Cells(0).Value))
16.                    .Parameters.Add(New SqlParameter("@emp_address", dgvEmp.Rows(i).Cells(1).Value))
17.                    .Parameters.Add(New SqlParameter("@emp_phone", dgvEmp.Rows(i).Cells(2).Value))
18.                    .Parameters.Add(New SqlParameter("@emp_gender", dgvEmp.Rows(i).Cells(3).Value))
19.                    .Parameters.Add(New SqlParameter("@Status", dgvEmp.Rows(i).Cells(4).Value))
20.                    .Parameters.Add(New SqlParameter("@Username", dgvEmp.Rows(i).Cells(5).Value))
21.                    .Parameters.Add(New SqlParameter("@Password", dgvEmp.Rows(i).Cells(6).Value))
22.                End With
23.                objCmd.ExecuteNonQuery()
24.            End If
25.        Next
26.        MessageBox.Show("บันทึกข้อมุลแล้ว")
27.        myCon.Close()
28.        dgvEmp.Rows.Clear()

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-27 14:14:10 By : onjira
 

 

No. 10

Guest


Quote:
Code (VB.NET)

01.Imports System.Data.SqlClient
02.Public Class Form1
03.    Public employee_ID As String
04.    Dim AddItemValue As New List(Of keypair)
05.    '  Dim AddItemDate As New List(Of keypair)
06.    Dim gender As String                                                '
07.    ' Dim vardate As String
08. 
09. 
10. 
11. 
12.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
13.        setddgender()
14. 
15.    End Sub
16. 
17.    Private Sub setddGender()
18.        AddItemValue.Add(New keypair("ชาย", "M"))
19.        AddItemValue.Add(New keypair("หญิง", "F"))
20. 
21.        For Each AddItemValues As keypair In AddItemValue
22.            ComboBox1.Items.Add(AddItemValues.Name)
23.        Next
24.    End Sub
25. 
26.    Private Sub ctrecord_Click(sender As Object, e As EventArgs) Handles ctrecord.Click
27.        Dim Con As New conn()
28.        Dim strCon As New SqlConnection(Con.strConn)
29.        strCon.Open()
30.        Dim datadate As String = ""
31. 
32. 
33.        Dim Conm As New SqlCommand("insemployee_data", strCon)
34.        Conm.CommandType = CommandType.StoredProcedure
35.        Conm.Parameters.Add("@employee", SqlDbType.VarChar, 50).Value = TextBox1.Text.Trim
36.        Conm.Parameters.Add("@name", SqlDbType.VarChar, 100).Value = TextBox2.Text.Trim
37.        Conm.Parameters.Add("@startdate", SqlDbType.VarChar).Value = DateTimePicker1.Text.Trim
38.        Conm.Parameters.Add("@department", SqlDbType.VarChar, 50).Value = TextBox3.Text.Trim
39.        Conm.Parameters.Add("@sex", SqlDbType.VarChar, 50).Value = ComboBox1
40.        Conm.Parameters.Add("@phon", SqlDbType.VarChar, 50).Value = TextBox4.Text.Trim
41. 
42. 
43.        Conm.ExecuteNonQuery()
44.        strCon.Close()
45.        clear_text()
46.        viewemployee.Show()
47.    End Sub
48.    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
49.        Dim SelectedText As String = ComboBox1.Items(ComboBox1.SelectedIndex).ToString
50.        For Each AddItemValues As keypair In AddItemValue
51.            If SelectedText = AddItemValues.Name Then
52.                gender = AddItemValues.KeyName
53. 
54.            End If
55.        Next
56.    End Sub
57.    Private Sub clear_text()
58.        TextBox1.Text = ""
59.        TextBox2.Text = ""
60.        TextBox3.Text = ""
61.        TextBox4.Text = ""
62.        DateTimePicker1.Text = ""
63.        ComboBox1.Text = ""
64. 
65.    End Sub
66. 
67.    Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
68.        viewemployee.Show()
69. 
70.    End Sub
71.End Class

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-24 11:06:12 By : กนกวรรณ หมั่นกิจ
 

 

No. 11



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 9 เขียนโดย : onjira เมื่อวันที่ 2015-02-27 14:14:10
รายละเอียดของการตอบ ::
.Parameters.Add(New SqlParameter("@id", txtId.Text))

txtId.Text มันซ้ำอยู่ที่ค่าเดิมรึป่าวครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-25 08:01:53 By : lamaka.tor
 

 

No. 12

Guest


ขอเป็น c# หน่อยครับพรีสสสส
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-04-10 09:22:29 By : pongsakorn
 

 

No. 13



โพสกระทู้ ( 2 )
บทความ ( 0 )



สถานะออฟไลน์


ผมใช้วิธีนี้ครับ
'//////////////// สำหรับการแสดงผลใน datagrid ครับ
Dim sqlstr As String = "SELECT * FROM Table"
Dim cs As New SqlConnection

Dim adp as SqlDataAdapter
adp = New SqlDataAdapter(sqlstr, cs)
adp.Fill(ds, "tablename")
adp.FillSchema(ds, SchemaType.Source, "tablename")
Me.DataGridView1.DataSource = ds
Me.DataGridView1.DataMember = "tablename"

'////////////// สำหรับ update ข้อมูลจาก datagrid ลง database ครับ ตอบสนองต่อ event ที่ต้องการนะครับ
Dim cmdbuilder As New SqlCommandBuilder(adp)
Dim i As Integer
Try
i = adp.Update(ds, "tablename")
MsgBox("Records Updated= " & i)
Catch ex As Exception
MsgBox(ex.Message)
End Try

ลองดูนะครับ ไม่รู้ช่วยได้แค่ไหนนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-07-06 22:44:57 By : khasri
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ต้องการบันทึกข้อมูลจาก DataGridView ลงฐานข้อมูล Database หลาย ๆ แถวพร้อมกัน ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่