<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2013年9月2日

    Oracle 臨時(shí)表空間暴漲(轉(zhuǎn))

    http://blog.csdn.net/weikaifenglove/article/details/4059258            昨天在做測(cè)試的時(shí)候發(fā)現(xiàn)一個(gè)非常奇怪的問(wèn)題:在程序的查詢模塊中做查詢的時(shí)候,開(kāi)始速度很快,但是過(guò)了一段時(shí)間以后速度就變慢,最后干脆就報(bào)錯(cuò),不工作了。在排錯(cuò)的過(guò)程中,發(fā)現(xiàn)Oracle臨時(shí)表空間暴漲,達(dá)到了幾十個(gè)GB,在Oracle中對(duì)Session進(jìn)行跟蹤,發(fā)現(xiàn)磁盤(pán)空間還在不停的消耗,幾乎是每隔5s,臨時(shí)表空間就會(huì)增長(zhǎng)500MB左右,最后報(bào)錯(cuò)的原因應(yīng)該是因?yàn)闆](méi)有磁盤(pán)空間可以分配造成的。這是一件十分恐怖的事情。

            我們知道Oracle臨時(shí)表空間主要是用來(lái)做查詢和存放一些緩存的數(shù)據(jù)的,磁盤(pán)消耗的一個(gè)主要原因是需要對(duì)查詢的結(jié)果進(jìn)行排序,如果沒(méi)有猜錯(cuò)的話,在磁盤(pán)空間的(內(nèi)存)的分配上,Oracle使用的是貪心算法,如果上次磁盤(pán)空間消耗達(dá)到1GB,那么臨時(shí)表空間就是1GB,如果還有增長(zhǎng),那么依此類(lèi)推,臨時(shí)表空間始終保持在一個(gè)最大的上限。像上文提到的恐怖現(xiàn)象經(jīng)過(guò)分析可能是以下幾個(gè)方面的原因造成的。
            1. 沒(méi)有為臨時(shí)表空間設(shè)置上限,而是允許無(wú)限增長(zhǎng)。但是如果設(shè)置了一個(gè)上限,最后可能還是會(huì)面臨因?yàn)榭臻g不夠而出錯(cuò)的問(wèn)題,臨時(shí)表空間設(shè)置太小會(huì)影響性能,臨時(shí)表空間過(guò)大同樣會(huì)影響性能,至于需要設(shè)置為多大需要仔細(xì)的測(cè)試。
            2.查詢的時(shí)候連表查詢中使用的表過(guò)多造成的。我們知道在連表查詢的時(shí)候,根據(jù)查詢的字段和表的個(gè)數(shù)會(huì)生成一個(gè)迪斯卡爾積,這個(gè)迪斯卡爾積的大小就是一次查詢需要的臨時(shí)空間的大小,如果查詢的字段過(guò)多和數(shù)據(jù)過(guò)大,那么就會(huì)消耗非常大的臨時(shí)表空間。
           3.對(duì)查詢的某些字段沒(méi)有建立索引。Oracle中,如果表沒(méi)有索引,那么會(huì)將所有的數(shù)據(jù)都復(fù)制到臨時(shí)表空間,而如果有索引的話,一般只是將索引的數(shù)據(jù)復(fù)制到臨時(shí)表空間中。
           針對(duì)以上的分析,對(duì)查詢的語(yǔ)句和索引進(jìn)行了優(yōu)化,情況得到緩解,但是需要進(jìn)一步測(cè)試。

           總結(jié):
           1.SQL語(yǔ)句是會(huì)影響到磁盤(pán)的消耗的,不當(dāng)?shù)恼Z(yǔ)句會(huì)造成磁盤(pán)暴漲。
           2.對(duì)查詢語(yǔ)句需要仔細(xì)的規(guī)劃,不要想當(dāng)然的去定義一個(gè)查詢語(yǔ)句,特別是在可以提供用戶自定義查詢的軟件中。
           3.仔細(xì)規(guī)劃表索引。

    臨時(shí)表空間使用注意:
    1.臨時(shí)表空間 是用于在進(jìn)行排序操作(如大型查詢,創(chuàng)建索引和聯(lián)合查詢期間存儲(chǔ)臨時(shí)數(shù)據(jù))
    每個(gè)用戶都有一個(gè)臨時(shí)表空間
    2.對(duì)于大型操作頻繁,(大型查詢,大型分類(lèi)查詢,大型統(tǒng)計(jì)分析等),應(yīng)指定單獨(dú)的臨時(shí)表空間,以方便管理

    3.分配用戶單獨(dú)臨時(shí)表空間,一般是針對(duì) 大型產(chǎn)品數(shù)據(jù)庫(kù),OLTP數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)倉(cāng)庫(kù)
    對(duì)于小型產(chǎn)品不需要單獨(dú)制定臨時(shí)表空間,使用默認(rèn)臨時(shí)表空間
    原文鏈接:
    http://blog.csdn.net/weikaifenglove/article/details/4059258

    posted @ 2013-09-02 13:51 Alter 閱讀(281) | 評(píng)論 (0)編輯 收藏
    2013年3月6日

    完整java開(kāi)發(fā)中JDBC連接數(shù)據(jù)庫(kù)代碼和步驟

    1. JDBC連接數(shù)據(jù)庫(kù)   
    2. •創(chuàng)建一個(gè)以JDBC連接數(shù)據(jù)庫(kù)的程序,包含7個(gè)步驟:   
    3.  1、加載JDBC驅(qū)動(dòng)程序:   
    4.     在連接數(shù)據(jù)庫(kù)之前,首先要加載想要連接的數(shù)據(jù)庫(kù)的驅(qū)動(dòng)到JVM(Java虛擬機(jī)),   
    5.     這通過(guò)java.lang.Class類(lèi)的靜態(tài)方法forName(String  className)實(shí)現(xiàn)。   
    6.     例如:   
    7.     try{   
    8.     //加載MySql的驅(qū)動(dòng)類(lèi)   
    9.     Class.forName("com.mysql.jdbc.Driver") ;   
    10.     }catch(ClassNotFoundException e){   
    11.     System.out.println("找不到驅(qū)動(dòng)程序類(lèi) ,加載驅(qū)動(dòng)失敗!");   
    12.     e.printStackTrace() ;   
    13.     }   
    14.    成功加載后,會(huì)將Driver類(lèi)的實(shí)例注冊(cè)到DriverManager類(lèi)中。   
    15.  2、提供JDBC連接的URL   
    16.    •連接URL定義了連接數(shù)據(jù)庫(kù)時(shí)的協(xié)議、子協(xié)議、數(shù)據(jù)源標(biāo)識(shí)。   
    17.     •書(shū)寫(xiě)形式:協(xié)議:子協(xié)議:數(shù)據(jù)源標(biāo)識(shí)   
    18.     協(xié)議:在JDBC中總是以jdbc開(kāi)始   
    19.     子協(xié)議:是橋連接的驅(qū)動(dòng)程序或是數(shù)據(jù)庫(kù)管理系統(tǒng)名稱(chēng)。   
    20.     數(shù)據(jù)源標(biāo)識(shí):標(biāo)記找到數(shù)據(jù)庫(kù)來(lái)源的地址與連接端口。   
    21.     例如:(MySql的連接URL)   
    22.     jdbc:mysql:   
    23.         //localhost:3306/test?useUnicode=true&characterEncoding=gbk ;   
    24.    useUnicode=true:表示使用Unicode字符集。如果characterEncoding設(shè)置為   
    25.    gb2312或GBK,本參數(shù)必須設(shè)置為true 。characterEncoding=gbk:字符編碼方式。   
    26.  3、創(chuàng)建數(shù)據(jù)庫(kù)的連接   
    27.     •要連接數(shù)據(jù)庫(kù),需要向java.sql.DriverManager請(qǐng)求并獲得Connection對(duì)象,   
    28.      該對(duì)象就代表一個(gè)數(shù)據(jù)庫(kù)的連接。   
    29.     •使用DriverManager的getConnectin(String url , String username ,    
    30.     String password )方法傳入指定的欲連接的數(shù)據(jù)庫(kù)的路徑、數(shù)據(jù)庫(kù)的用戶名和   
    31.      密碼來(lái)獲得。   
    32.      例如:   
    33.      //連接MySql數(shù)據(jù)庫(kù),用戶名和密碼都是root   
    34.      String url = "jdbc:mysql://localhost:3306/test" ;    
    35.      String username = "root" ;   
    36.      String password = "root" ;   
    37.      try{   
    38.     Connection con =    
    39.              DriverManager.getConnection(url , username , password ) ;   
    40.      }catch(SQLException se){   
    41.     System.out.println("數(shù)據(jù)庫(kù)連接失敗!");   
    42.     se.printStackTrace() ;   
    43.      }   
    44.  4、創(chuàng)建一個(gè)Statement   
    45.     •要執(zhí)行SQL語(yǔ)句,必須獲得java.sql.Statement實(shí)例,Statement實(shí)例分為以下3  
    46.      種類(lèi)型:   
    47.       1、執(zhí)行靜態(tài)SQL語(yǔ)句。通常通過(guò)Statement實(shí)例實(shí)現(xiàn)。   
    48.       2、執(zhí)行動(dòng)態(tài)SQL語(yǔ)句。通常通過(guò)PreparedStatement實(shí)例實(shí)現(xiàn)。   
    49.       3、執(zhí)行數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程。通常通過(guò)CallableStatement實(shí)例實(shí)現(xiàn)。   
    50.     具體的實(shí)現(xiàn)方式:   
    51.         Statement stmt = con.createStatement() ;   
    52.        PreparedStatement pstmt = con.prepareStatement(sql) ;   
    53.        CallableStatement cstmt =    
    54.                             con.prepareCall("{CALL demoSp(? , ?)}") ;   
    55.  5、執(zhí)行SQL語(yǔ)句   
    56.     Statement接口提供了三種執(zhí)行SQL語(yǔ)句的方法:executeQuery 、executeUpdate   
    57.    和execute   
    58.     1、ResultSet executeQuery(String sqlString):執(zhí)行查詢數(shù)據(jù)庫(kù)的SQL語(yǔ)句   
    59.         ,返回一個(gè)結(jié)果集(ResultSet)對(duì)象。   
    60.      2int executeUpdate(String sqlString):用于執(zhí)行INSERT、UPDATE或   
    61.         DELETE語(yǔ)句以及SQL DDL語(yǔ)句,如:CREATE TABLE和DROP TABLE等   
    62.      3、execute(sqlString):用于執(zhí)行返回多個(gè)結(jié)果集、多個(gè)更新計(jì)數(shù)或二者組合的   
    63.         語(yǔ)句。   
    64.    具體實(shí)現(xiàn)的代碼:   
    65.           ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;   
    66.     int rows = stmt.executeUpdate("INSERT INTO ...") ;   
    67.     boolean flag = stmt.execute(String sql) ;   
    68.  6、處理結(jié)果   
    69.     兩種情況:   
    70.      1、執(zhí)行更新返回的是本次操作影響到的記錄數(shù)。   
    71.      2、執(zhí)行查詢返回的結(jié)果是一個(gè)ResultSet對(duì)象。   
    72.     • ResultSet包含符合SQL語(yǔ)句中條件的所有行,并且它通過(guò)一套get方法提供了對(duì)這些   
    73.       行中數(shù)據(jù)的訪問(wèn)。   
    74.     • 使用結(jié)果集(ResultSet)對(duì)象的訪問(wèn)方法獲取數(shù)據(jù):   
    75.      while(rs.next()){   
    76.          String name = rs.getString("name") ;   
    77.     String pass = rs.getString(1) ; // 此方法比較高效   
    78.      }   
    79.     (列是從左到右編號(hào)的,并且從列1開(kāi)始)   
    80.  7、關(guān)閉JDBC對(duì)象    
    81.      操作完成以后要把所有使用的JDBC對(duì)象全都關(guān)閉,以釋放JDBC資源,關(guān)閉順序和聲   
    82.      明順序相反:   
    83.      1、關(guān)閉記錄集   
    84.      2、關(guān)閉聲明   
    85.      3、關(guān)閉連接對(duì)象   
    86.           if(rs != null){   // 關(guān)閉記錄集   
    87.         try{   
    88.             rs.close() ;   
    89.         }catch(SQLException e){   
    90.             e.printStackTrace() ;   
    91.         }   
    92.           }   
    93.           if(stmt != null){   // 關(guān)閉聲明   
    94.         try{   
    95.             stmt.close() ;   
    96.         }catch(SQLException e){   
    97.             e.printStackTrace() ;   
    98.         }   
    99.           }   
    100.           if(conn != null){  // 關(guān)閉連接對(duì)象   
    101.          try{   
    102.             conn.close() ;   
    103.          }catch(SQLException e){   
    104.             e.printStackTrace() ;   
    105.          }   
    106.           }  
    posted @ 2013-03-06 21:03 Alter 閱讀(134) | 評(píng)論 (0)編輯 收藏
    2012年12月1日

    C#程序脫離.net框架的多種方法與應(yīng)用 [轉(zhuǎn)]

    本文介紹的是C#編寫(xiě)的winform程序脫離.net框架的方法。【也支持VB.NET和C++.NET】

    原文地址:http://hi.baidu.com/44498/blog/item/dabd37166a11bd10962b437d.html


    很多朋友會(huì)問(wèn),為何選擇C#   ?其實(shí)原因很簡(jiǎn)單,因?yàn)樗哂衅渌魏握Z(yǔ)言都不具備的生產(chǎn)力。

    軟件工程的發(fā)展,主要目的也就是提高生產(chǎn)力,這個(gè)核心不變,我們的學(xué)習(xí)方向也就不變。

    本文代碼示例支持.NET FRAMEWORK 2.0 ,3.0 , 3.5 ,LINQ等先進(jìn)的解決方案。

    一看就懂,一學(xué)就會(huì),一目了然。。。

    以下所有例子,均經(jīng)過(guò)測(cè)試,在2k,xp,2003,vista,2008,Win7下都是可以運(yùn)行的。也包括X86和X64平臺(tái)。

     

    聲明:本文講解的是解決方案,并不提供下載【主要是沒(méi)有穩(wěn)定的網(wǎng)盤(pán)】,

     

     

    ---------------------------------------------------------

     

     

    1, .Net Linker :中國(guó)移動(dòng)的飛信就利用了它的核心。飛信是使用C#在.NET上開(kāi)發(fā)的。貴,最便宜的版本要1000多美金。【傻瓜式操作,這里不做介紹】

    2,用飛信的虛擬機(jī)來(lái)引導(dǎo)自己開(kāi)發(fā)的.NET程序。

    3,使用mono來(lái)達(dá)到脫離.NET框架的效果,可以跨平臺(tái)。【完美支持.net2.0,以及絕大多數(shù).NET3.5,目前已經(jīng)支持WPF系列新技術(shù)了】

    ///////////////////////實(shí)驗(yàn)過(guò)程/////////////////////////

    例子1:先說(shuō)最簡(jiǎn)單的,使用飛信虛擬機(jī)來(lái)試驗(yàn)吧。

    【不要引用VB編寫(xiě)的控件或者是類(lèi)庫(kù),因?yàn)轱w信的虛擬機(jī)功能很少】

    先安裝"飛信2008 3.5版",然后打開(kāi)安裝目錄,里面有個(gè)VMDotNet文件夾,里面就是.NET虛擬環(huán)境相關(guān)文件了,找到飛信安裝目錄下的"VMDotNet\v2.0.50727\FetionVM.exe"來(lái)啟動(dòng)運(yùn)行我們的.NET WinForm程序:

    【可以使用命令行來(lái)傳值也可以用其他方式,都是一樣的】例如:

    WinExec("FetionVM.exe 我的程序.exe", SW_SHOW);     //C++ code

    為了方便,我們可以編寫(xiě)一個(gè)檢測(cè).net框架版本的程序作為引導(dǎo)程序,如果已經(jīng)安裝了.net框架就不用虛擬機(jī),如果沒(méi)有安裝,調(diào)用虛擬器來(lái)啟動(dòng)程序。【請(qǐng)不要使用C#或者其他托管類(lèi)型的語(yǔ)言來(lái)編寫(xiě)這個(gè)引導(dǎo)程序,否則失去了意義】。

    很容易吧?但是有個(gè)弊端,你的.NET程序如果要操作類(lèi)似于SQL SERVER2000,2005,2008 或者是MYSQL,Oracle,DB2等數(shù)據(jù)庫(kù),用這個(gè)飛信自帶的虛擬機(jī)實(shí)現(xiàn)就比較麻煩,所以這個(gè)飛信的虛擬機(jī)只能做簡(jiǎn)單的程序應(yīng)用。還有一點(diǎn)大家要注意,使用飛信的虛擬機(jī),涉及到的還有版權(quán)問(wèn)題。測(cè)試一下,壓縮以后文件大概是6,7M左右,還行。

    例子2:使用MONO來(lái)脫離框架并且跨平臺(tái)。注:測(cè)試結(jié)果顯示,使用MONO啟動(dòng).NET程序速度是最快的。

    首先到MONO的官方網(wǎng)站下載源代碼或者最新版本,然后安裝,我用的是2.2版本【目前已經(jīng)有2.4版本了,比較新,支持的更多】。

    為了方便各位朋友試驗(yàn),我提供我本次試驗(yàn)的MONO版本2.2 :

    下載地址:

    安裝完畢,打開(kāi)目錄,找到兩個(gè)子目錄,名字分別是bin,lib ,然后復(fù)制到另外一個(gè)目錄里面去【因?yàn)榘惭b的時(shí)候默認(rèn)安裝在C盤(pán)的】然后把你的.net開(kāi)發(fā)的程序也復(fù)制到這個(gè)目錄里面去;假設(shè)這個(gè)目錄名字叫做VM,那么你的這個(gè)文件夾里應(yīng)該有個(gè)最少三個(gè)文件,一個(gè)是bin文件夾,一個(gè)是lib文件夾,還有一個(gè)就是你寫(xiě)的.net程序了。

    然后可以用C++編寫(xiě)一個(gè)引導(dǎo)程序用來(lái)調(diào)用你的.NET程序;貼個(gè)簡(jiǎn)單的代碼吧:

    int main()
    {
    WinExec("bin\\mono.exe 你的應(yīng)用程序.exe",SW_SHOWNORMAL);
    return 0;
    }
    當(dāng)然,為了方便,你可以自己在邏輯里面判斷一下,機(jī)器里安裝的是.NET的哪個(gè)版本?如果版本低了,就調(diào)用MONO來(lái)執(zhí)行,如果匹配,就不調(diào)用MONO了。

    【這個(gè)例子只是支持簡(jiǎn)單的WINFORM和數(shù)據(jù)庫(kù)訪問(wèn),WEBSERVICE的,在文章末尾】

    如果按照我說(shuō)的一路操作,肯定是可以運(yùn)行的了,但是你會(huì)發(fā)現(xiàn),現(xiàn)在你的.NET程序是一個(gè)綠色軟件,但是他所在的目錄下lib,或者是bin文件夾的大小是非常恐怖的。。。有300M以上的大小,這豈不是和我們的想法沖突了?當(dāng)然不是;我們來(lái)精簡(jiǎn)目錄吧:

    在bin目錄下,保留以下文件,其他的刪除即可

    然后打開(kāi)lib文件夾,在2.0文件夾下保留Accessibility.dll,mscorlib.dll,mscorlib.dll.mdb,然后在GAC文件夾里面保留以下文件夾【下圖中的類(lèi)庫(kù)全部保留,最好不要?jiǎng)h除】:

    這樣,整個(gè)目錄就精簡(jiǎn)的差不多了,當(dāng)然,你可以根據(jù)自己的需要定制需要的各種類(lèi)庫(kù)。然后打包即可,以我本人機(jī)器為例,壓縮后的文件是9.8M,比.NET 2.0的框架小了很多,但是比飛信的那個(gè)虛擬機(jī)還是大了一些;換個(gè)角度來(lái)看,用mono不涉及版權(quán)問(wèn)題,也可以調(diào)用各種數(shù)據(jù)庫(kù),我本機(jī)測(cè)試操作的是SQL SERVER 2005數(shù)據(jù)庫(kù),一切正常。讓你的.NET程序也跨平臺(tái)吧!只有MONO能做到這一點(diǎn)。

    本文原創(chuàng),抄襲的別太過(guò)分哦,最起碼也專(zhuān)業(yè)點(diǎn),別圖片都不貼就發(fā)布,

    耽誤別人學(xué)習(xí),那才是最大的犯罪。。。

    例子3:使用.Net Linker 的一個(gè)老版本來(lái)測(cè)試的

    通過(guò)命令行來(lái)提取.net環(huán)境的一些類(lèi)庫(kù)文件,然后模擬,不知道飛信用的是哪個(gè)版本,反正我這個(gè)老版本是不太好用,要手動(dòng)精簡(jiǎn)目錄的。

    但是唯一的好處就是兼容性比較好,而且不限制數(shù)據(jù)庫(kù)的使用。這個(gè)也涉及到版權(quán)問(wèn)題,就不啰嗦了。

    精簡(jiǎn)后的文件大小是8.66M,一般的應(yīng)用都可以滿足了,呵呵。

    好了,時(shí)間不早了,睡覺(jué)了。歡迎大家留言,提出各種不同的見(jiàn)解。

    更新:2009年3月30日

    抽空拿到了.Net Linker 的破解版,用了一下還是不錯(cuò)的,穩(wěn)定性很好,兼容多種數(shù)據(jù)庫(kù)。美中不足的是有了MONO的比較,用.net linker虛擬機(jī)以后,程序啟動(dòng)的時(shí)候速度稍微慢了一點(diǎn),和飛信的啟動(dòng)速度一樣。。。不過(guò)這也沒(méi)辦法,忍了。

    更新:2009年4月14日 支持web service

    今天看到一個(gè)朋友咨詢MONO平臺(tái)上調(diào)用webservice的問(wèn)題;事實(shí)上,MONO是完全支持web service的     ;我這里也做個(gè)示例吧。

    新建一個(gè)項(xiàng)目,winform的,版本是.net2.0;然后添加一個(gè)引用,引用我們準(zhǔn)備好的web服務(wù)。

    引用的url:http://www.ayandy.com/, 這個(gè)web服務(wù)的功能是天氣預(yù)報(bào)那種的,包括國(guó)內(nèi)外400多個(gè)主要城市。【如果圖片不清晰,可以保存到本地然后查看。】

    然后,引用好了,就調(diào)用吧~    我這里例子顯示的是北京當(dāng)天的天氣。

    然后運(yùn)行程序:

    我的機(jī)器上有.net 3.5,當(dāng)然沒(méi)問(wèn)題,但是我們要是在其他機(jī)器上呢?

    切換到虛擬機(jī)里,虛擬機(jī)是xp sp2,沒(méi)有安裝.NET任何版本的框架;

    把程序復(fù)制到mono的目錄中,運(yùn)行之。。。

    可以看到,沒(méi)有任何問(wèn)題。。。這里用的MONO版本是2.2,支持的很好。

    大家可以看到,整個(gè)winform程序的按鈕,字體樣式都做了改變,

    因?yàn)镸ONO是在LINUX上的解決方案,沒(méi)有使用微軟默認(rèn)的字體和樣式。

     

    本文偶爾更新,更新時(shí)間不確定。感謝大家的關(guān)注。。。

    有問(wèn)題可以留言。。。下一篇日志《使用托管C++【c++.net】脫離.NET框架實(shí)戰(zhàn)》

    2009.04.23 更新:

    關(guān)于有些朋友提出,MONO到底支持多少種數(shù)據(jù)庫(kù)的問(wèn)題,其實(shí)MONO支持的數(shù)據(jù)庫(kù)絕對(duì)比我們想象的多,幾乎是很多我們都沒(méi)有用過(guò)的。。。好了,我給個(gè)清單,讓大家心里有數(shù)。最近上網(wǎng)少,資料也沒(méi)怎么查,就先拿個(gè)05年的文章參考一下吧。

    Mono Supported Database Access- -
                                          

    Mono has many ADO.NET Data Providers to get you connected.

    Providers for Open Source databases:

    PostgreSQL: Npgsql is fully managed provider for PostgreSQL and is actively maintained

    SQL Lite: actively maintained. Requires sqlite library.

    Firebird Interbase: fully managed provider for Firebird and is actively maintained.

    MySQL: use the MySQL Connector/Net from MySQL AB which is fully managed and actively maintained by MySQL AB, but it is not included with Mono. There is the ByteFX.Data.MySqlClient provider which is not actively maintained, but it is included with Mono.


    Providers for commercial databases:

    IBM DB2 Universal Database Requires DB2 client software

    ODBC requires ODBC software which is available for Unix and Windows

    Oracle requires client software including Oracle Call Interface

    OLE DB Requires libgda (http://www.gnome-db.org/) System.Data.OleDb is not actively maintained plus it only works on Linux with GNOME 2.x

    Microsoft SQL Server fully managed provider which is actively maintained for Microsoft SQL Server 7.0/2000/2005 databases

    Sybase fully managed provider for Sybase 12.x databases and is actively maintained

    Older Microsoft SQL Server and Sybase databases Not actively maintained.


    Alternative to ADO.NET is GdaSharp (Gnome Data Access)

    Gnome Data Access (http://www.gnome-db.org/) GdaSharp is C# bindings to GDA (GNOME Data Access) and is included with GtkSharp (http://www.mono-project.com/GtkSharp), but it requires libgda be installed. Works only on Linux with GNOME 2.x installed.

    External Projects that have created ADO.NET Providers that work on Mono:

    MySQL Connector/Net from MySQL AB (http://dev.mysql.com/downloads/connector/net/) is the .NET and Mono data provider for MySQL

    ByteFX.Data.MySqlClient (http://sourceforge.net/projects/mysqlnet/) is a MySQL Managed data provider. ByteFX.Data is no longer actively developed, but it is included with Mono. Please use the MySQL Connector/Net provider from MySQL AB instead.

    NPgsql (http://gborg.postgresql.org/project/npgsql/projdisplay.php) is a fully managed provider for PostgreSQL and is included with Mono.

    Firebird (http://sourceforge.net/projects/firebird/) fully managed provider for Firebird databases and is included with Mono.

    Advanced Data Provider (http://advanced-ado.sourceforge.net/) ADP, is a transparent factory for ADO.NET which loads providers dynamically.

    Other Projects

    DB40 (http://www.mono-project.com/DB4O) Open source object database for C#

    2009.05.27 更新

    要注意的是,在X86下編譯的程序,如果選擇ANYCPU,那么提取后的程序可以在X64下運(yùn)行。

    但是,如果是編譯的時(shí)候選擇X64,那就無(wú)法通過(guò)LINKER提取。

    posted @ 2012-12-01 03:49 Alter 閱讀(841) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題  
    主站蜘蛛池模板: 色天使色婷婷在线影院亚洲| 日韩视频免费在线| 特级毛片全部免费播放a一级 | 中文字幕无码视频手机免费看| 黄床大片免费30分钟国产精品| 亚洲精品无码国产片| 亚洲国产成人久久| 99ri精品国产亚洲| 亚洲成AV人片在| 色久悠悠婷婷综合在线亚洲| 免费国产高清视频| 国产午夜免费秋霞影院| 国产伦精品一区二区免费| MM1313亚洲国产精品| 亚洲avav天堂av在线网爱情| 亚洲精品国产成人| 国产zzjjzzjj视频全免费| 成全视频免费高清 | 亚洲婷婷天堂在线综合| 国产亚洲一区区二区在线| 亚洲成A人片在线观看无码3D | 国产成人精品亚洲2020| 久久久久久亚洲精品不卡| 免费国产美女爽到喷出水来视频| 老司机永久免费网站在线观看| 好爽…又高潮了免费毛片 | 亚洲国产精品成人午夜在线观看| 亚洲av永久无码嘿嘿嘿| 亚洲av无码一区二区三区天堂古代| 亚洲欧洲高清有无| 亚洲免费中文字幕| 亚洲精品亚洲人成在线播放| 中文无码亚洲精品字幕| 亚洲国产精品无码av| 亚洲AV永久无码精品一百度影院 | 久久精品毛片免费观看| 最新黄色免费网站| 成人国产精品免费视频| 国产成人AV免费观看| 无码少妇精品一区二区免费动态| 亚洲av第一网站久章草|