注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

naigeer的知识库

不断学习,用知识武装头脑,用头脑创造未来!

 
 
 

日志

 
 

ADO.net创建access数据库及向数据库中添加数据的解决办法  

2008-07-24 11:42:14|  分类: 编程系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Ado.net创建access数据库及表用ADOX搞定。

向表中添加数据行时,特别需要注意使用DbCommandBuilder对象,否则即使添加行记录之后,数据库内仍然不存在数据!(相关帮助文档见:使用DataAdapter 更新数据源——ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/WD_ADONET/html/d1bd9a8c-0e29-40e3-bda8-d89176b72fb1.htm)

代码如下:

Private Sub cmdSaveAsDB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSaveAsDB.Click
        Dim pPathName As String
        Dim rs As New DataSet
        On Error GoTo Err_Renamed
        With SaveDialog
            .InitialDirectory = My.Application.Info.DirectoryPath & "\.." & "\Data"
            .Filter = "(*.mdb)|*.mdb"
            .Title = "GBID另存为"
            .OverwritePrompt = True
            .ShowDialog()
        End With
        pPathName = SaveDialog.FileName
        If pPathName = "" Then
            Exit Sub
        End If
        If pFeatDataSource.Rows.Count <= 0 Then
            MsgBox("导出数据为空!", MsgBoxStyle.Exclamation)
            Exit Sub
        End If
        Dim ConnString As String = "provider=Microsoft.Jet.OLEDB.4.0;data source=" & pPathName
        Dim cat As New Catalog
        If Dir(pPathName) = "" Then
            cat.Create(ConnString) ' + ";Jet OLEDB:Engine Type=5")
        Else
            Kill(pPathName)
            cat.Create(ConnString) ' + ";Jet OLEDB:Engine Type=5")
        End If
        Dim NewTable As New ADOX.Table
        With NewTable
            .Name = "GBID"
            .Columns.Append("Name", DataTypeEnum.adWChar, 20)
            .Columns.Append("WorkspacePath", DataTypeEnum.adWChar, 100)
            .Columns.Append("GBID", DataTypeEnum.adWChar, 6)
            .Columns.Append("DataType", DataTypeEnum.adWChar, 3)
            .Columns.Append("输出名称", DataTypeEnum.adWChar, 20)
        End With
        cat.Tables.Append(NewTable)

        Dim cn As OleDb.OleDbConnection
        Dim cmd As OleDb.OleDbDataAdapter
        'OleDbCommandBuilder对象必不可少,否则cmd.update会出现错误,而且会导致增加的数据行并没有添加到数据库中
       
Dim builder As OleDb.OleDbCommandBuilder
        cn = New OleDbConnection(ConnString)
        cmd = New OleDbDataAdapter("select * from GBID", cn)
        builder = New OleDbCommandBuilder(cmd)
        cn.Open()
        cmd.Fill(rs, "GBID")            ’参数中必须添加表名,否则,无法对新建的表进行操作

        If rs Is Nothing Then
            MsgBox("GBID数据库文件不存在!", MsgBoxStyle.Exclamation)
            Exit Sub
        End If
        Dim DTable As DataTable
        DTable = rs.Tables("GBID")
        Dim NewRow As DataRow
        Dim DRow As DataRow
        For Each DRow In pFeatDataSource.Rows
            '''''''''''''''''''''''''''''''''''''''''''''''''''
            '以下在记录集(pFeatDataSource)里添加记录
            NewRow = DTable.NewRow()
            With NewRow
                .Item("Name") = DRow.Item("Name")
                .Item("WorkspacePath") = DRow.Item("WorkspacePath")
                .Item("GBID") = DRow.Item("GBID")
                .Item("DataType") = DRow.Item("DataType")
                .Item("输出名称") = DRow.Item("输出名称")
            End With
            DTable.Rows.Add(NewRow)
        Next DRow
        cmd.Update(rs, "GBID")      ’参数中必须添加表名,否则,无法对新建的表进行操作
        rs.AcceptChanges()
        cn.Close()
        MsgBox("国标成功导出到表中!", MsgBoxStyle.Information)
        Exit Sub
Err_Renamed:
        MsgBox(Err.Description, MsgBoxStyle.Exclamation)
        rs = Nothing
    End Sub

  评论这张
 
阅读(664)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017