.NET連接數據庫

一、.NET Framework

.NET Framework是微軟的開發程序框架,用.NET開發的程序就需要.NET環境來支持才能運行,打個比方Linux的應用程序只能在Linux的環境下才能使用。.NET Framework具體來說是支持生成和運行下一代應用程序和 XML Web services 的內部 Windows 組件。

 目前已發行的版本有1.0、1.1、2.0、3.0、3.5、4.0、4.5(及4.5.1、4.5.2)、4.6(及4.6.1):
 WIN7自帶3.5,
 WIN8自帶4.5,
 WIN8.1自帶4.5.1 …

 3.5版本:依然使用.NET Framework 2.0版本公共語言運行庫(CLR),增加對LINQ的支持、擴展方法(Extension Method)屬性(Attribute)、支持Lambda表達式,增加ADO .NET Entity Framework支持;
 4.0版本:增加了並行的支持,關閉3.5的分層,是一個新的框架,可以與3.5同時運行,自帶高度安全網絡系統;
 4.5版本:一個針對 .NET Framework 4 的高度兼容的就地更新,提供了Metro風格,支持生成和運行下一代應用程序和 Web 服務的內部 Windows 組件。

高版本的 .NET Framework與低版本之間的關係?
.NET每個版本的類庫都不一樣,從1.1、2.0、3.0、3.5、4.0、4.5、4.5.1互相都不向下兼容。


二、GAC

GAC的全稱叫做全局程序集緩存,通俗的理解就是存放各種.net平臺下面需要使用的dll的地方。在.net平臺之前,程序員們都把可能用到的公共dll存放到system32文件夾下,由於版本的不一致及其他原因(將控制信息存放到註冊表),造成 了很有名的DLL Hell,所以微軟使用GAC來避免DLL重蹈覆轍。
GAC的具體目錄在 windows/ assembly


三、TNS

Oracle中TNS的完整定義:Transparence Network Substrate 透明網絡底層,監聽服務是它重要的一部分,不是全部,不要把TNS當作只是監聽器。
 TNS是Oracle Net的一部分,專門用來管理和配置Oracle數據庫和客戶端連接的一個工具,在大多數情況下客戶端和數據庫要通訊,必須配置TNS;當然在少數情況下,不用配置TNS也可以連接Oracle數據庫,比如通過JDBC。如果通過TNS連接Oracle,那麼客戶端必須安裝Oracle client程序。

SQL Serve 和 Oracle一些異同點
相同點: 語法基本一致,使用也都類似,工具只是載體
不同點: (因爲主要講述TNS,所以只介紹關於TNS不同點)
  SQL Serve 會自動列出局域網中出現的服務器,只需要在工具上面選擇指定服務器,然後輸入賬號和密碼即可;
  Oracle則不一樣,不能自動列出局域網中的服務器,所以必須要配置TNS。

配置TNS代碼如下:

# tnsnames.ora Network Configuration File: E:\oracle\product\10.2.0\client_3\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LHINDINT1=
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP) (HOST = 10.134.81.110) (PORT = 1526))

    (CONNECT_DATA =
        (SERVER = DEDICATED) (INSTANCE_NAME = indint1) (SERVICE_NAME = indint)
    )
  )

->LHINDINT1這個名字是由自己取名,客戶端通過這個名字來獲得服務器的登錄信息
->PROTOCOL是指定的通信協議,Oracle是通過TCP/IP通信的
->HOST如果客戶端和數據庫在同一臺電腦可以用localhost或者IP,如果不同電腦就必須用IP地址--是Oracle所在電腦的IP
->PORT一般都是1521
->SERVER是dedicated檢測模式的監聽
->SERVICE_NAME是Oracle的SID

TNS的詳細配置文件

TNS的配置文件包括服務器端和客戶端兩部分
  服務器端有 listener.ora、sqlnet.ora 和 tnsnames.ora,如果通過OCM(Oracle Connection Manage)和域名服務管理客戶端連接,服務器端可能還包括 cman.ora 等文件;
  客戶端有 tnsnames.ora,sqlnet.ora

Oracle所有的TNS配置文件的默認路徑:%ORACLE_HOME%\network\admin

listener.ora:監聽器配置文件,成功啓動後是駐留在服務器端的一個服務。監聽器是用來偵聽客戶端的連接請求以及建立客戶端和服務器端連接通道的一個服務程序。默認情況下Oracle在1521端口上偵聽客戶端連接請求;

sqlnet.ora:用來管理和約束或限制tns連接的配置,通過在該文件中設置一些參數,可以管理TNS連接。根據參數作用的不同,需要分別在服務器和客戶端配置;

tnsnames.ora:配置客戶端到服務器端的連接服務,包括客戶端要連接到的服務器和數據庫的配置信息。


補充:Oracle 調試存儲過程中報錯 unable to find RAC connection information for (INST_ID=1)

配置tnsnames.ora 文件 

RAC1 =
(DESCRIPTION =
   (ADDRESS =
     (PROTOCOL = TCP)
     (HOST = 10.16.xxx.xx)
     (PORT = 1521)
   )
   (CONNECT_DATA =
     (SERVICE_NAME = TESTDB)
     (instance_name = TESTDB1)
   )
)
RAC2 =
(DESCRIPTION =
   (ADDRESS =
    (PROTOCOL = TCP)
     (HOST = 10.16.xxx.xx)
     (PORT = 1521)
   )
   (CONNECT_DATA =
     (SERVICE_NAME = TESTDB)
     (instance_name = TESTDB2)
   )
)

參考 Oracle配置TNS

Oracle 中報錯【unable to find RAC connection information for (INST_ID=1)】


四、連接Oracle數據庫

1、BIN目錄下添加引用 dll – 類型分爲 BIN/GAC
GAC本地所在位置:C:\Windows\assembly

2、Web.config

<connectionStrings>
    <add name="ConnectionString" connectionString="Data Source=LHINDINT1;User ID=INDINTWEB;Password=INDINTWEB.;Unicode=True" providerName="System.Data.OracleClient"/>
</connectionStrings>
......
<compilation debug="true">
  <assemblies>
    <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </assemblies>
</compilation>

INDINTLH1是數據庫名,在Oracle客戶端目錄下配置了TNS
E:\oracle\product\10.2.0\client_3\NETWORK\ADMIN -- tnsnames.ora


五、連接MySql數據庫

  • 1)建立C# Application,文件 -> 新建 -> 項目 -> Visual C# -> 控制檯應用程序
  • 2)添加引用 -> 引用 右鍵 -> 添加引用 -> 瀏覽 -> choose瀏覽 -> MySql.Data.dll
  • 3)代碼連接 -> 在Program.cs裏
string connectstr = "server=localhost;port=3306;database=test;user=root;password=123456;SslMode = none;";
MySqlConnection conn = new MySqlConnection(connectstr);

try
{
    conn.Open();
    Console.WriteLine("連接成功!!!");
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}
finally
{
    conn.Close();
    Console.WriteLine("正常關閉!!!");
}	
Console.ReadKey();

C# 連接MySQL異常
The host localhost does not support SSL connections.

解決方案: 
	在connectstr 連接字符串添加語句: SslMode = none;

下載 MySql Connectors/NET

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章