SQL Server、Oracle、DB2一决高下
来源:互联网 发布:javascript 清空对象 编辑:程序博客网 时间:2024/05/01 00:47
来自:http://hb.qq.com/a/20111208/001661.htm
【IT168 技术】目前数据库领域,三大厂商就是微软,Oracle和IBM,他们的拳头产品分别就是SQL Server,Oracle,db2。这种三足鼎立的局面,已经存在了一段时间,而且还将继续存在下去。这三个产品,我个人认为本质上的差异性并不大,用户在选择的时候,主要根据自己公司的平台基础架构和使用习惯,以及知识储备的情况决定。
SQL Server Express
最早SQL Server 2000就提供了所谓的MSDE(Desktop Engine),目的就是提供一个免费可以分发的小型数据库引擎,方便开发和部署。后来在SQL Server 2005中正式改名为SQL Server Express,这个名称沿用到了SQL Server 2008以及R2这个版本.
SQL Server Express是免费的,它可以用于小型业务系统,或者一些实验性的开发场景。它有一个容量限制,就是数据库不能超过4GB。
SQL Server Express可以单独下载安装,也可以通过安装Visual Studio 的时候,勾选这个组件实现自动安装。一般安装好之后,会有两个服务组件,如下图所示
SQL Sever Express没有自带管理工具,一般可以通过命令行(sqlcmd)来实现一些管理
需要注意的是,这里的服务器名称要写.\sqlexpress,在SQL Server中,这表示的是一个命名实例的意思。
如果不习惯用命令行,则还可以单独下载SQL Server Express Management Studio,这也是免费的
SQL Server与Visual Studio有天然的关系,在Visual Studio中可以很容易建立SQL Server 服务器连接,并且进行诸如创建数据库,表,视图,修改数据,新建查询等所有有关操作。即便你没有安装上面所提到的Management Studio,其实你需要做的事情都可以通过Visual Studio来完成
要访问SQL Server数据库的数据,是相当方便的。.NET Framework内置提供了System.Data.SqlClient的命名空间,可以很方便地完成数据库的访问。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace Sample
class Program
static void Main(string[] args)
var conn = new SqlConnection(Database=Northwind;data source=(local)\\sqlexpress;integrated security=true);
var cmd = conn.CreateCommand();
cmd.CommandText = SELECT * FROM Employees;
var reader = cmd.ExecuteReader();
while (reader.Read())
Console.WriteLine(reader[0].ToString());
同时,SQL Server Express还完全支持LINQ to SQL以及ADO.NET Entity Framework
Oracle Express
接下来我们来看一下Oracle Express的情况,目前Oracle提供的最新版本是11g Express,可以通过下面的地址下载
http://www.oracle.com/technetwork/database/express-edition/downloads/index.html
我下载了两个安装程序,如下图
ODTWithODAC112021.zip是所谓的开发工具包,也就是给Visual Studio配套的一些程序集和脚本等
安装好之后,大致有如下的几个服务
如果安装了ODT,就可以很方便地在Visual Studio中连接到Oracle数据库,进行操作
需要注意的是,这个Assembly并没有安装在GAC,所以你可能需要通过“浏览”这个选项卡,直接找到它,而不是在.NET这个选项卡里面去找。
具体的访问代码其实很类似,例如
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.DataAccess.Client;
namespace Sample
class Program
static void Main(string[] args)
var conn = new OracleConnection(data source=localhost;user>
var cmd = conn.CreateCommand();
cmd.CommandText = SELECT * FROM SYS.Employees;
var reader = cmd.ExecuteReader();
while (reader.Read())
Console.WriteLine(reader[0].ToString());
IBM db2 Express-C
IBM目前所提供的db2 Express 的名称叫Express-C, 版本号为9.7.4,可以通过下面的地址下载到
http://www.ibm.com/developerworks/cn/downloads/im/udbexp/
我下载了几个组件,如下图所示
db2exec_vsai_975_win_x86.exe是给visual studio的一个插件
ibm_data_studio_standalone_win_v31.zip是db2 express的一个管理工具
安装完之后,我大致看了一下有关的服务,有如下几个
在Visual Studio中,同样也可以方便地进行连接,和管理。这得益于Visual Studio所提供的良好的扩展机制
并且使用诸如下面这样的代码访问即可
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IBM.Data.DB2;
namespace Sample
class Program
static void Main(string[] args)
//创建数据库连接
var conn = new DB2Connection(Database=SAMPLE;User>
//创建命令
var cmd = conn.CreateCommand();
cmd.CommandText = SELECT * FROM Employee;
//打开连接
//读取数据
var reader = cmd.ExecuteReader();
while (reader.Read())
Console.WriteLine(reader[0].ToString());
//关闭连接
conn.Close();
我们会发现,这与之前的SQL Server Express和Oracle中访问数据库的方式,何其相似。
总结
从上面的例子和截图可以看出来,这三个产品,在我们作为开发人员具体来使用的时候,其实差别很小的。这也是一个好的框架所带来的优势。.NET支持灵活的数据访问框架,由此,我们可以专注于业务本身,而不需要为不同的数据源编写不同的代码。事实上,完全可以做到,一份代码复用于不同的数据源。而作为一个Express的产品,他们从能力上,没有本质上的差别。
针对他们的一些小的区别,我整理一个表格如下
- SQL Server、Oracle、DB2一决高下
- SQL Server, Oracle, DB2
- 比较SQL Server与Oracle、DB2
- 比较SQL Server、Oracle、Sybase和DB2
- SQL Server、Oracle、DB2横向大比拼
- SQL Server与Oracle、DB2的比较
- 比较SQL Server与Oracle、DB2
- DB2,ORACLE,SQL SERVER系统表
- oracle和sql server DB2的区别
- 比较SQL Server与Oracle DB2
- SQL Server,Oracle 与 DB2 的区别
- SQL Server vs Oracle vs DB2
- oracle、sql server、mysql、db2 查询 区别
- 数据库关键字 (Oracle, SQL Server, DB2)
- SQL Server、Oracle、DB2性能大比拼
- SAP BW 连接ORACLE/SQL SERVER/DB2
- Oracle dblink/DB2 Federation/SQL Server linkserver
- C++连接Oracle/DB2/SQL Server
- 产品经理必读的九步法
- 谢谢一切改动我生活命运的教师们,谢谢你们!!!
- 敏捷开发方法XP的12个最佳实践
- ios基础教程博客
- BaseAdapter的使用
- SQL Server、Oracle、DB2一决高下
- LeetCode题解:Swap Nodes in Pairs
- replaceAll Dangling meta character '*' near index 0
- 网络语音实时通信音频下的缓冲区设计
- solr包目录
- 工作5年半了,最近准备做一些工作的小结了
- ubuntu下创建备份
- 多线程测试工具groboutils的使用
- 算法导论22.4-2 有向无环图的路径数目