一、.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 中报错【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;