zoukankan      html  css  js  c++  java
  • 使用OLEDB访问ACCESS的几点经验

    1.取得序列号(顺序号)
    如果习惯了ORACLE的Sequence,到ACCESS下使用自动编号字段还是会不习惯:如何取得新的编号值,如何拿他来做关联字段值?
    可以做如下一个函数:
      
    ''' <summary>
        
    ''' 取得序列的下一值,用于处理自动编号字段,库表结构为SeqTable(IDField,AA),AA为数字型字段
        
    ''' </summary>
        
    ''' <param name="strSeqTable"></param>
        
    ''' <returns></returns>
        
    ''' <remarks></remarks>

        Public Shared Function GetSeqValue(ByVal theOleDbAccess As OleDbAccess, ByVal strSeqTable As StringAs Object
            
    Try
                
    Dim aCon As OleDbConnection = CType(theOleDbAccess.OpenConnection(CType(aCon, IDbConnection)), OleDbConnection)
                
    Dim strSQL1 As String = "insert into " & strSeqTable & "(AA)values(1)"
                
    Dim strSQL2 As String = "SELECT @@IDENTITY"
                
    Dim aCmd As New OleDbCommand(strSQL1, aCon)
                aCmd.ExecuteNonQuery()
                aCmd.Dispose()
                
    Dim aCmd2 As New OleDbCommand(strSQL2, aCon)
                
    Return aCmd2.ExecuteScalar()
            
    Catch ex As Exception
                modOutputLog.OutputLog(ex)
                
    Throw ex
            
    End Try
        
    End Function

    2.字段名的保留字
    开始从ORACLE转到ACCESS,因为要做一单机版程序,并要导数据到ORACLE上,因此采用了和ORACLE库表一样的结构,如下:
    UID,PhoneNo,Address,Password
    一切SELECT都正常,我手工往里加了数据,访问也正常,直到我想从ORACLE导数据并insert到ACCESS时,出错了:无效的INSERT语句!
    我更新用的是oleDBDataAdapter生成的SQL来更新的,到我改成手工的:
    insert into AAAA(UID,PhoneNo,Address,Password) values(xxxxxxx)也还是不行。
    我用上面的SQL在ACCESS中构造了一个查询,又是可以执行的,怪了。
    后来一个字段一个字段去掉,才发现,原来PASSWORD是OLEDB的一个保留字,拿来做字段名,写在SQL中要转义,写成
    insert into AAAA(UID,PhoneNo,Address,[Password]) values(xxxxxxx),就正常了。


    这几个问题忙得实在不太值,都是一些约定上的东西,要自己一点一点分析出来,效率太低了。


  • 相关阅读:
    托付和事件的使用
    在使用supervisord 管理tomcat时遇到的小问题
    无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin
    (转)Openlayers 2.X加载高德地图
    (转)openlayers实现在线编辑
    (转) Arcgis for js加载百度地图
    (转)Arcgis for js加载天地图
    (转) 基于Arcgis for Js的web GIS数据在线采集简介
    (转) Arcgis for js之WKT和GEOMETRY的相互转换
    (转)Arcgis for Js之Graphiclayer扩展详解
  • 原文地址:https://www.cnblogs.com/Render/p/1308073.html
Copyright © 2011-2022 走看看