日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

NHibernate1.02使用MsAccess2000Dialect 提供对 Access 数据库的支持

發布時間:2025/6/17 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NHibernate1.02使用MsAccess2000Dialect 提供对 Access 数据库的支持 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? NHibernateContrib 提供的JetDriver訪問Access數據庫簡直是噩夢連連。插入更新含有日期類型的都回出現異常。在網上找到用 MsAccess2000Dialect 訪問Access數據庫的方法。1.02版本的NHibernate 或者NHibernateContrib本身沒有包含MsAccess2000Dialect 在這里找到了它的下載地址 http://wiki.nhibernate.org/pages/viewpageattachments.action?pageId=345
?????? 包含兩個文件:msaccess2000joinfragment.cs?和 msaccess2000dialect.cs?。
?????? 打開NHibernate的項目后把兩個文件放到這里

然后重新編譯NHibernate的項目就可以了。但是下載下來的文件有幾個地方要修改一下。

  • MsAccess2000Dialect.cs文件的這個地方 ????protected?override?char?CloseQuote
    ????????{
    ????????????
    get?{?return?']';?}
    ????????}

    ????????
    ///?<summary></summary>
    ????????protected?override?char?OpenQuote
    ????????{
    ????????????
    get?{?return?'[';?}
    ????????}
    的訪問修飾符應該改為public。
  • MsAccess2000Dialect.cs的構造函數 public?MsAccess2000Dialect()?:?base()
    ????????{
    ????????????Register(?DbType.AnsiStringFixedLength,?
    "CHAR(255)"?);
    ????????????Register(?DbType.AnsiStringFixedLength,?
    255,"CHAR($1)"?);
    ????????????Register(?DbType.AnsiStringFixedLength,?
    8000,?"LONGTEXT"?);
    ????????????Register(?DbType.AnsiString,?
    "VARCHAR(255)"?);
    ????????????Register(?DbType.AnsiString,?
    255,"VARCHAR($1)"?);
    ????????????Register(?DbType.AnsiString,?
    2147483647,?"LONGTEXT"?);
    ????????????Register(?DbType.Binary,?
    "IMAGE"?);
    ????????????Register(?DbType.Boolean,?
    "BIT"?);
    ????????????Register(?DbType.Byte,?
    "TINYINT"?);
    ????????????Register(?DbType.Currency,?
    "MONEY"?);
    ????????????Register(?DbType.Date,?
    "DATETIME"?);
    ????????????Register(?DbType.DateTime,?
    "DATETIME"?);
    ????????????Register(?DbType.Decimal,?
    "NUMERIC"?);
    ????????????Register(?DbType.Double,?
    "DOUBLE"?);?//synonym?for?FLOAT(53)
    ????????????Register(?DbType.Guid,?"UNIQUEIDENTIFIER"?);
    ????????????Register(?DbType.Int16,?
    "INT"?);
    ????????????Register(?DbType.Int32,?
    "LONG"?);
    ????????????Register(?DbType.Int64,?
    "NUMERIC"?);
    ????????????Register(?DbType.Single,?
    "REAL"?);?//synonym?for?FLOAT(24)?
    ????????????Register(?DbType.StringFixedLength,?"CHAR(255)"?);
    ????????????Register(?DbType.StringFixedLength,?
    255,"CHAR($1)"?);
    ????????????Register(?DbType.StringFixedLength,?
    4000,?"LONGTEXT"?);
    ????????????Register(?DbType.String,?
    "VARCHAR(255)"?);
    ????????????Register(?DbType.String,?
    255,"VARCHAR($1)"?);
    ????????????Register(?DbType.String,?
    1073741823,?"LONGTEXT"?);
    ????????????Register(?DbType.Time,?
    "DATETIME"?);

    ????????????DefaultProperties[?Environment.OuterJoin?]?
    =?"true";
    ????????????DefaultProperties[?Environment.ConnectionDriver?]?
    =?"NHibernate.Driver.OleDbDriver";
    ????????????DefaultProperties[?Environment.PrepareSql?]?
    =?"false";
    ????????}
    中的Register方法應該全部改為RegisterColumnType方法.
  • 構造函數中 DefaultProperties[?Environment.UseOuterJoin?]?=?"true"; 的定義改為 Environment.UseOuterJoin。
  • 修改完畢后使用這個連接配置文件就可以了。

    ?<configSections>
    ????
    <section?name="nhibernate"?type="System.Configuration.NameValueSectionHandler,?System,?Version=1.0.3300.0,Culture=neutral,?PublicKeyToken=b77a5c561934e089"?/>
    ???
    </configSections>
    ??
    ??
    <nhibernate>
    ????
    <add?key="hibernate.connection.provider"?value="NHibernate.Connection.DriverConnectionProvider"/>
    ????
    <add?key="hibernate.dialect"?value="NHibernate.Dialect.MsAccess2000Dialect"/>
    ????
    <add?key="hibernate.connection.driver_class"?value="NHibernate.Driver.OleDbDriver"/>
    ????
    <add?key="hibernate.connection.connection_string"?value="Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=Access數據庫的路徑和名稱"/>
    ??
    </nhibernate>
    ?

    ?懶得重新編譯的朋友下可以下這個已經重新編譯過的NHibernate的單項目 /Files/Bruce_H21/NHibernate.rar
    ?不知道有沒有人用SQL Server 7 dialect來訪問Access數據庫?
    ?
    ? 如需轉載請注明出處

    轉載于:https://www.cnblogs.com/Bruce_H21/archive/2006/04/29/388643.html

    總結

    以上是生活随笔為你收集整理的NHibernate1.02使用MsAccess2000Dialect 提供对 Access 数据库的支持的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。