This Domain(Admin5.com) is for Sale:

.NET访问Oracle数据库相关

时间:2007-12-23  来源:不详  作者:迈克DB
长期以来,我一直用的是MSSQLServer/Access数据库,通过.NET访问MS自家的东西几乎没碰到过什么麻烦。最近项目中要用Oracle作为数据库,学习研究了一些.NET访问Oracle的东西,发现问题倒真的不少。

1。System.Data.OracleClient和System.Data.OleDb命名空间

虽然通过这两个命名空间的类都可以访问Oracle数据库,但和SQLServer类似的(System.Data.SqlClient命名空间的类效率要比System.Data.OleDb命名空间中的类高一些),System.Data.OracleClient命名空间中的类要比System.Data.OleDb命名空间的类效率高一些(这一点我没有亲自验证,但大多数地方都会这么说,而且既然专门为Oracle作的东西理论上也应该专门作过针对性的优化)。
当然还有另一点就是从针对性上说,System.Data.OracleClient要更好一些:
比如数据类型,System.Data.OleDb.OleDbType枚举中所列的就没有System.Data.OracleClient.OracleType枚举中的那些有针对性;另外,Oracle的Number类型假如数字巨大,超出.NET数据类型范围的情况中,就必须使用System.Data.OracleClient中的专门类--OracleNumber类型。
好了,不再赘述这两个的比较,下面主要讨论System.Data.OracleClient命名空间中的类型,即ADO.NETforOracleDataProvider(数据提供程序)。 内容来自dedecms

2。数据库连接:

无论是System.Data.OleDb还是System.Data.OracleClient访问Oracle都需要在.NET运行的机器(ASP.NET中就是Web服务器)安装Oracle客户端组件。(这一点是和MS的两种数据库不同的,MS的东西安装MDAC:MicrosoftDataAccessComponent2.6以上版本后,就无须再安装SQLServer客户端或者Office软件,就能访问。)
SystemRequirements:

(1)如用System.Data.OracleClient访问Oracle,客户端组件版本应在Oracle8iClientRelease3(8.1.7)以上版本。MS只确保访问Oracle8.1.6、Oracle8.1.7、Oracle9i服务器时的情况。MDAC2.6以上。

(2)如用System.Data.OleDb访问Oracle,客户端组件版本7.3.3.4.0以上或8.1.7.4.1以上。MDAC2.6以上。
如服务器为Oracle8i以上,客户端组件版本应为8.0.4.1.1c。
在.NET运行的机器中,安装Oracle客户端,然后打开NetManager(Oracle9i)/EasyConfig(Oracle8i)按你以前的经验设置本地服务的映射(这里的服务名将用于数据库连接串)。
System.Data.OracleClient中访问Oracle数据库的连接串是:
UserID=用户名;Password=密码;DataSource=服务名
(上述为一般的连接串,具体的连接串项目可以在System.Data.OracleClient.OracleConnection.ConnectionString属性的文档中找到。) 织梦内容管理系统
System.Data.OleDb中的访问Oracle数据库的连接串是:
Provider=MSDAORA.1;UserID=用户名;Password=密码;DataSource=服务名

3。Oracle中的数据类型:
Oracle的数据类型和SQLServer相比,要“希奇”一些:SQLServer的大多数据类型很轻易找到.NET中比较接近的类型,Oracle中的类型就离.NET类型远了许多,究竟Oracle是和Java亲近的数据库。
number:数字类型,一般是Number(M,N),M是有效数字,N是小数点后的位数(默认0),这个是按十进制说的。
nvarchar2:可变长字符型(Unicode),这个比较像SQLServer的nvarchar(但不知Oracle为什么加了个“2”)。(去掉“n”为非Unicode的,下同。)
nchar:定长字符型(Unicode)。
nclob:“写作文”的字段,存储大量字符(Unicode)时用。
date:日期类型,比较接近SQLServer的datetime。
Oracle中字段不能是bit或者bool之类的类型,一般是number(1)代替的。
和SQLServer一样在SQL命令中,字符类型需要用单引号(’)隔开,两个单引号(’’)是单引号的字符转义(比如:I’mfat.写入一个SQL命令是:UPDATE...SET...=’I’’mfat.’...)。

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息