使用WCF怎样连接到数据库

使用WCF怎样连接到数据库,第1张

WCF数据库开发一般分下面几步:

1. 接口定义, 即常说的contract接口

2.接口实现,即实现contract的接口

3. 接口托管,将写好的接口部署到wcf托管程序里,譬如IIS,console,windows service,WinForm

4. 在接口实现里完善数据库访问的代码。此段代码与传统的C/S两层 *** 纵DB无差异。

两种方式:1.IP+SID方式 2.配置链接方式

1..IP+SID方式

[csharp] view plaincopyprint?

DbHelperOracle.connectionString = string.Format(@"Data Source=(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = {0})(PORT = 1521))

)

(CONNECT_DATA =

(SID = {1})

(SERVER = DEDICATED)

)

)User Id={2}Password={3}",

txtDBServerIP.Text.Trim(), txtOracleSID.Text.Trim(), txtDBUserName.Text.Trim(), txtDBPassword.Text.Trim())

这种方式不需要在Oracle Net Manager管理中添加链接配置信息。

2. 2.配置链接方式,

在Oracle Net Manager管理中添加链接配置信息,然后链接字符串如下写法:

[csharp] view plaincopyprint?

Data Source=TORCLUser Id=myUsernamePassword=myPassword

另外其他的连接方式,参考如下,从其他网站转来的:

Oracle连接字符串总结

Oracle XE

标准连接

Oracle XE(或者"Oracle Database 10g Express Edition")是一个简单免费发布的版本。

以下是语法格式

Driver=(Oracle in XEClient)dbq=111.21.31.99:1521/XEUid=myUsernamePwd=myPassword

ODBC

新版本连接方式

以下是语法格式

Driver={Microsoft ODBC for Oracle}Server=myServerAddressUid=myUsernamePwd=myPassword

老版本连接方式

以下是语法格式:

Driver={Microsoft ODBC Driver for Oracle}ConnectString=OracleServer.worldUid=myUsernamePwd=myPassword

OLE DB, OleDbConnection (.NET)

标准安全连接

此连接方式使用来自微软的Provider。

以下是语法格式:

Provider=msdaoraData Source=MyOracleDBUser Id=myUsernamePassword=myPassword

信任连接

以下是语法格式:

Provider=msdaoraData Source=MyOracleDBPersist Security Info=FalseIntegrated Security=Yes

标准安全连接

此连接方式使用来自Oracle的Provider。

以下是语法格式:

Provider=OraOLEDB.OracleData Source=MyOracleDBUser Id=myUsernamePassword=myPassword

信任连接

以下是语法格式:

Provider=OraOLEDB.OracleData Source=MyOracleDBOSAuthent=1

以下是语法格式:

Provider=OraOLEDB.OracleData Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=myPort)))(CONNECT_DATA=(SID=MyOracleSID)(SERVER=DEDICATED)))User Id=myUsernamePassword=myPassword

Oracle.DataAccess.Client.OracleConnection

标准连接

以下是语法格式:

Data Source=TORCLUser Id=myUsernamePassword=myPassword

带integrated security的连接

以下是语法格式:

Data Source=TORCLIntegrated Security=SSPI

带 ODP.NET 不带 tnsnames.ora的连接

以下是语法格式:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)))User Id=myUsernamePassword=myPassword

OracleConnection, Oracle Data Provider, ODP.NET, System.Data.OracleClient.OracleConnection

标准连接

以下是语法格式:

Data Source=MyOracleDBIntegrated Security=yes

仅在Oracle8i release 3 或更高版本

指明用户密与密码的连接

以下是语法格式:

Data Source=MyOracleDBUser Id=myUsernamePassword=myPasswordIntegrated Security=no

这是另一种连接方式不依赖你的DNS.You create a connection string based on the format used in the tnsnames.ora file without the need to actually have one of these files on the client pc.

以下是语法格式:

SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)))uid=myUsernamepwd=myPassword

Some reported problems with the one above and Visual Studio. Use the next one if you've encountered problems.

以下是语法格式:

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)))User Id=myUsernamePassword=myPassword

使用连接池

连接池服务如果找不到一个完全匹配连接字符串的连接,他将会创建一个。如果能找到该连接,将会重新使用。

以下是语法格式:

Data Source=myOracleDBUser Id=myUsernamePassword=myPasswordMin Pool Size=10Connection Lifetime=120Connection Timeout=60Incr Pool Size=5Decr Pool Size=2

Windows验证

以下是语法格式:

Data Source=myOracleDBUser Id=/

特权连接

使用SYSOPER的特权

以下是语法格式:

Data Source=myOracleDBUser Id=SYSPassword=SYSDBA Privilege=SYSOPER

利用密码终止函数

当第一次打开连接时,当打开链接后,一个密码过期错误被抛出,捕获这个错误并执行OpenWithNewPassword命令行设置新密码。

以下是语法格式:

Data Source=myOracleDBUser Id=myUsernamePassword=myPassword

oConn.OpenWithNewPassword(sTheNewPassword)

代理验证

以下是语法格式:

Data Source=myOracleDBUser Id=myUsernamePassword=myPasswordProxy User Id=pUserIdProxy Password=pPassword

Core Labs OraDirect (.NET)

标准连接

以下是语法格式:

User ID=myUsernamePassword=myPasswordHost=oraPooling=trueMin Pool Size=0Max Pool Size=100Connection Lifetime=0

Data Shape

MS Data Shape

以下是语法格式:

Provider=MSDataShape.1Persist Security Info=FalseData Provider=MSDAORAData Source=oracUser Id=myUsernamePassword=myPassword

既然你用WCF,为什么还让客户端连接数据库呢?

重新设计一下!

客户端只知道服务器的存在,数据库对客户端应该是透明的;

客户端只是想服务器发出请求,至于该请求的处理是对于数据库还是内存或者其他,客户端不需要知道,只要得到服务器的处理结果就可以。

另外,无论客户端还是服务器,用一个数据库连接是不应该的,遇上多线程就麻烦了:不做同步处理会产生错误,做同步处理效率又不行……

------------

你数据库连接使用不对,如果只用一个连接,别说事务,就是并发的普通处理都可能异常;应该每个请求都创建连接、打开、关闭、释放。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9891256.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存