none
【VB.NET】將 Datagridview 上所有資料寫進ACCESS RRS feed

  • 問題

  • 目前Datagridview有多筆資料

    每次資料數量都不一定

    如何在User按下寫入的btn後

    將這些資料全部回寫到ACCESS紀錄

    ===============================

    目前我遇到的狀況是

    當我按下btn並沒有秀出任何錯誤訊息

    但是我看資料庫裡並沒有被新增這些資料


    這是我的Btn

     Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    
            For i As Integer = 0 To DataGridView1.RowCount - 1
                Call P_AddNew(i)
            Next
    
        End Sub
    
     Private Function P_AddNew(ByVal i As Integer) As Boolean
    
            Dim s_time = System.DateTime.Now.ToString(("yyyyMMdd"))
    
    
            Try
                Get_GenSerialNo("type3", 4) '自動取得4位數序號
                Dim cmExec As OleDbCommand
                cmExec = New OleDbCommand
                cmExec.Connection = cnMain
                '將資料寫入資料庫對應欄位 
                Dim aaa As String = DataGridView1.Rows(i).Cells(0).ToString
                Dim bbb As String = DataGridView1.Rows(i).Cells(1).ToString
                Dim ccc As String = DataGridView1.Rows(i).Cells(2).ToString
    
                Dim strSql As String = "Insert Into Pdct_mast(No,條碼A,條碼B,狀態,登錄日期,登錄時間) " & _
                                      "Values('" & serialno & "','" & TextBox1.Text.Trim & "','" & aaa & "','" & Label2.Text & "','" & bbb & "','" & ccc & "'" & _
                                           ")"
    
    
    
    
                cmExec.CommandText = strSql
                cmExec.ExecuteNonQuery()
                Return True
    
            Catch ex As Exception
                MsgBox(ex.ToString)
                Return False
    
            End Try


    2016年9月11日 上午 03:44

解答

所有回覆

  • (1) 你的資料不是來自於 DataTable ? 為什麼又要從 DataGridView 裡取值再存 ? 直接從資料來源處理資料不是很乾脆嗎 ?

    (2) 你的 OleDbConnection 沒有呼叫 Open 方法建立連結

    (3) 你的 SQL 敘述寫的很可怕, 用串字串的方式串條件會有 SQL Injection  風險, 請採用參數式查詢.

    參考 [分享] 何謂 SQL injection,在此整理分享

    (4) 看來你的基礎觀念稍嫌薄弱, 建議可以把 MSDN 文件裡關於 ADO.NET 的部分詳細閱讀及練習, 這是一份非常棒的文件, 內容連結非常龐大, 把這整份讀懂對你會非常有幫助.

    ADO.NET


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2016年9月11日 上午 04:25
    版主
  • 您可以參考這篇文件的範例:

    How to Export Data into MS Access in C#?

    • 已標示為解答 yiyi.Chen 2016年9月14日 上午 06:27
    2016年9月12日 上午 04:10