UniDAC使用说明简单版1.docx
《UniDAC使用说明简单版1.docx》由会员分享,可在线阅读,更多相关《UniDAC使用说明简单版1.docx(13页珍藏版)》请在冰豆网上搜索。

UniDAC使用说明简单版1
UniDAC使用说明
整理:
兵临成下QQ:
383530895
UniDAC官方网址:
一、连接数据库ConnectingtoDatabase
1、通用连接属性
●Provider
第一个就应该设置的属性,指定要连接的数据库类型,根据指定的数据库连接类型不同其它的设置也会发生相应的变化;
●UsernameandPassword
登录数据的有效用户名和密码;
●Server
通常将此设成要连接数据库所在的计算机名或IP地址,如果将此属性设置为空,对于MySQL,InterBase连接数据库方式,UniDAC将试图连接本地(Localhost)。
Oracle:
客户端模式下,指定的Server名称一定要出现在tnsnames.ora中,且有效,设置效果如下:
withUniConnection1do
begin
ProviderName:
='Oracle';
Server:
='ORCL';
Username:
='username';
Password:
='password';
end;
直连模式(Directmode)下:
在此模式下,运行软件的计算机可以不安装Oracle客户端而连接Oracle数据库,但要做以下设置:
1)设置直连模式
2)设置Server
指定Server格式:
Host:
Port:
SID.
注:
客户端模式和直连模式的设置不能混淆,否则无法执行。
两种格式严格区分。
效果如下:
withUniConnection1do
begin
ProviderName:
='Oracle';
Server:
='192.168.1.113:
1521:
ORCL';
Username:
='Username';
Password:
='Password3';
end;
SQLServer:
指定要连接的数据库所在的网络IP,且有效,如果采用的不是默认端口(1433),Server应该这样设置:
HostName,PortNumber.
●Database
这个属性只对SQLServer,MySQL,PostgreSQL,InterBase,andSQLite连接方式有效,
●Port
指定TCP/IP协议访问的有效端口
MySQL–默认端口3306
PostgreSQL-默认端口5432
二、UniDAC(版本:
2.7)连接数据库必要文件或局限需求
1、Oracle连接
Oracle在采用直连模式将受到以下限制:
特别要注意的是(包括:
应用TUniLoader):
1)、应用直连模式,本地执行程序的客户机必须要安装TCP/IP协议
2)、注意防火墙
3)、数据库的triggers、checkconstraints、clusteredtables、loadingofremoteobjects、user-definedtypes将得不到支持
4)、available,likeOBJECT,ARRAY,REF,XML,BINARY_DOUBLE,BINARY_FLOAT这些类型将变为不可用
5)、TUniLoader的应用版本应高于Oracleclient8.17
以下是英文原文:
●triggersarenotsupported
●checkconstraintsarenotsupported
●referentialintegrityconstraintsarenotsupported
●clusteredtablesarenotsupported
●loadingofremoteobjectsisnotsupported
●user-definedtypesarenotsupported
●LOBsmustbespecifiedafterallscalarcolumns
●LONGsmustbespecifiedlast
●YoucannotuseTUniLoaderinathreadedOCIenvironmentwithOracleclient8.17orlower.
●ConnectusingtheTCP/IPnetworkprotocolonly.
●Sometypesarenotavailable,likeOBJECT,ARRAY,REF,XML,BINARY_DOUBLE,BINARY_FLOAT.
●Certainproblemsmayoccurwhenusingfirewalls.
●NLSconversionontheclientsideisnotsupported.
●TransparentApplicationFailoverisnotsupported.
●Statementcachingisnotavailable.
●OSauthenticationandchangingexpiredpasswordsfeaturesarenotavailable.
●TheDESauthenticationisused.
●OracleAdvancedSecurityisnotsupported.
●Wedonotguaranteestabilityofmultithreadedapplications.ItishighlyrecommendedtousetheseparateTUniConnectioncomponentforeachthreadwhenusingUniDACfromdifferentthreads.
1、SQLServer连接
1)提供连接支持
服务端:
SQLServer2005(includingCompactandExpresseditions),SQLServer2000,SQLServer7,andMSDE.
客户端:
SQLOLEDBandSQLNativeClient.
2)环境需求
MDAC(MicrosoftDataAccessComponents)版本不低于2.5
2、MySQL连接
MySQL提供的连接也包括直连和客户端连接方式,默认采用的是直连方式,如果要更改连接方式,在应用程序分发时要带上libmysqld.dll
二、Delphi与各数据库数据类型比较
Delphi数据类型与各数据库数据类型对比如下表,如有具体说明见表中脚注:
DelphiType
OracleTypes
SQLServerTypes
MySQLTypes[1]
InterBaseTypes
PostgreSQLTypes
SQLiteTypes
ftSmallint
NUMBER(p,0)[2]
(p<5)
SMALLINT
TINYINT(M)(M>1)
SMALLINT
SMALLINT
SMALLINT
TINYINT
SMALLINT
ftWord
-
TINYINT
TINYINT(M)UNSIGNED(M>1)
SMALLINTUNSIGNED
YEAR
-
-
-
ftInteger
NUMBER(p,0)[2]
(4
INT
MEDIUMINT
MEDIUMINTUNSIGNED
INT
INTEGER
INTEGER
INTEGER
INT
ftLargeint
NUMBER(p,0)[2]
(9
BIGINT
BIT
INTUNSIGNED
BIGINT
BIGINTUNSIGNED
BIGINT
BIGINT
BIGINT
ftFloat
NUMBER(p,s)[2]
BINARYFLOAT(FLOAT)
BINARYDOUBLE
DECIMAL(p,s)[3]
FLOAT
REAL
DECIMAL(p,s)[3]
FLOAT
DOUBLE
NUMBER(p,s)[3]
FLOAT
DOUBLEPRECISION
DECIMAL[3]
REAL
DOUBLEPRECISION
DECIMAL(p,s)[3]
FLOAT
DOUBLEPRECISION
ftBCD
NUMBER(p,s)[2]
(p<15)and(s<5)
DECIMAL(p,s)[3]
(p<15)and(s<5)
DECIMAL(p,s)[3]
(p<15)and(s<5)
DECIMAL(p,s)[3]
(p<15)and(s<5)
DECIMAL[3]
DECIMAL[3]
ftFMTBcd
NUMBER(p,s)[2]
(14
(4
DECIMAL(p,s)
(14
(4
DECIMAL(p,s)[3]
(14
(4
DECIMAL(p,s)[3]
(14
(4
DECIMAL[3]
DECIMAL[3]
ftCurrency
-
MONEY
SMALLMONEY
-
-
MONEY
MONEY
ftBoolean
-
BIT
TINYINT[4]
BOOL[4]
BOOLEAN[4]
BOOLEAN
BOOLEAN
BOOLEAN
ftString
VARCHAR2
NVARCHAR2
VARCHAR
CHAR
NCHAR
RAW[5]
INTERVALDAYTOSECOND
INTERVALDAYTOMONTH
ROWID
UROWID
CHAR
VARCHAR
CHAR
VARCHAR
ENUM
SET
BINARY[6]
VARBINARY[6]
CHAR
VARCHAR
CHAR
VARCHAR
CHAR
VARCHAR
ftWideString
Seenote[7]
NCHAR
NVARCHAR
Seenote[7]
Seenote[7]
Seenote[7]
Seenote[7]
ftMemo
LONG
Alsoseenote[8]
TEXT
NTEXT[9]
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
BLOBTEXT
TEXT
TEXT
CLOB
ftWideMemo
Seenote[10]
NTEXT[11]
Seenote[10]
Seenote[10]
Seenote[10]
Seenote[10]
ftOraClob
CLOB
NCLOB
-
-
-
-
-
ftBlob
LONGRAW
IMAGE
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
SpatialDataTypes
BLOBBINARY
BYTEA
BLOB
ftOraBlob
BLOB
-
-
-
LARGEOBJECT
-
ftBytes
-
BINARY
TIMESTAMP
BINARY
-
-
-
ftVarBytes
RAW
VARBINARY
VARBINARY
CHAR
VARCHAR
(CHARSET=OCTETS)
-
BINARY
VARBINARY
ftDate
-
-
DATE
DATE
DATE
DATE
ftDateTime
DATE
DATE
DATETIME
TIMESTAMP
TIMESTAMP
TIMESTAMP
DATETIME
ftTime
-
-
TIME
TIME
TIME
TIME
ftTimeStamp
TIMESTAMP
TIMESTAMPWITHTIMEZONE
-
-
-
-
-
ftCursor
REFCURSOR
-
-
-
REFCURSOR
-
ftGuid
-
UNIQUEIDENTIFIER
-
-
-
-
ftVariant
-
SQL_VARIANT
-
-
-
-
NOTSUPPORTED
BFILE
OBJECT
XML
CURSOR
XML
TABLE
-
-
-
-
[1]–如果FieldsAsString选项被设置True,则除BLOB和TEXT数据类型外,全部做为ftString来处理
[2]–OracleNUMBER数据类型与Delphi数据类型对应方式:
ifscaleequalszero,providerchecksvaluesofthespecificoptionstochoosethecorrectDelphitypeinthefollowingorder:
1.1fieldprecisionislessorequalPrecisionSmallint(defaultis4)-usesftSmallint;
1.2fieldprecisionislessorequalPrecisionInteger(defaultis9)-usesftInteger;
1.3fieldprecisionislessorequalPrecisionLargeInt(defaultis18)-usesftLargeint;
ifscaleisgreaterthanzero,theappropriateDelphitypeischosenusingthefollowingsequenceofrules:
.
2.1fieldprecisionislessorequalPrecisionFloat(defaultis0)-usesftFloat;
2.2EnableBCDisTrueandfieldprecision,scaleislessorequalPrecisionBCD(defaultis14,4)-usesftBCD;
2.3EnableFMTBCDisTrueandfieldprecision,scaleislessorequalPrecisionFMTBCD(defaultis38,38)-usesftFMTBCD;
2.4usesftFloat.
[3]-TheappropriateDelphitypeischosenusingthefollowingsequenceofrules:
EnableBCDisTrueandfieldprecision,scaleislessorequal14,4-usesftBCD;
EnableFMTBCDisTrue-usesftFMTBCD;
usesftFloat.
[4]-IftheEnableBooleanoptionisTrue
[5]-IftheRawAsStringoptionisTrue
[6]-IftheBinaryAsStringisTrue
[7]-IftheUseUnicodeoptionisTrue,allservertypesmappedtoftStringwillbemappedtoftWideString.
[8]-IftheLongStringsoptionisFalse,andthefieldlengthisgreaterthan255,allservertypesmappedtoftStringwillbemappedtoftMemo.
[9]-ForallDelphiversionspriortoBDS2006.
[10]-IftheUseUnicodeoptionisTrue,inBDS2006andlaterversionsallservertypesmappedtoftMemowillbemappedtoftWideMemo.
[11]-ForBDS2006andhigherIDEversions.
三、UniDAC更新数据
1、数据自动更新
TUniTable、TUniQuery和TUniStoredProc是用来检索和编辑数据的UniDAC控件,
四、主从关系表
五、存储过程
1、TUniConnection,TUniSQL,TUniQuery,TUniStoredProc均可以执行存储过程。
TUniConnection:
是一种最简单的执行存储过程的控件,但他有很多限制。
TUniConnection不能具有SQL、存储过程名和参数,不支持输出参数也不支持存储执行的预准备。
当然,如果只是运行一个既没有返回也没有输出参数设置,那TUniConnection是一个不错的选择。
TUniSQL:
TUniSQL是一个被分离出的小控件,执行SQL语句但不返回结果集。
它没有数据存储,但要消耗一些内存,但比TUniQuery和TUniStoredProc的执行速度快。
TUniQuery:
TUniQuery除具有TUniSQL的执行功能外,还能返回结果集。
TUniStoredProc:
TUniStoredProc是专门用来执行存储过程的一个控件,可以返回结果集、输出参数、执行准备以及通过CreateProcCall方法初始化等。
2、参数类型
UniDAC支持四种参数类型:
input,output,input/output,result
六、事务处理
TUniConnection通过StartTransaction,Commit,Rollback等方法来控制本地事务,判断一个事务是否开启用InTransaction。
七、控件详解
1、TUniConnection
建立和控件数据连接的控件,能访问的数据库包括:
Oracle,SQLServer,MySQL,InterBase,Firebird,和PostgreSQL.
虽然UniDAC对不同的数据库提供了统一的访问接口,但是对个别数据库还是要进行一些特殊的设置,这些设置是一个字符串列表,你可以按以下代码进行设置:
UniConnection.SpecificOptions.Values['CharLength']:
='1';
1、Oracle