oracle 链接wince,通过WEBSERVICE连接ORACLE

经过一周的IIS折腾,一周的ORACLE折腾。在经过今天下午的一点小曲折,终于在VS2005下对MFC引用WEBSERVICE连接ORACLE数据库取得了初步的成功。现总结一下:

这个过程分三步走:

一创建WEBSERVICE(C#)

二 C#连接ORACLE (PS:我开发WEBSERVICE用的是C#);

三 VS下MFC程序调用WEBSERVICE。

现将其中碰到的问题及解决过程记录如下:

一 IIS的配置及WEBSERVICE的初实例:

刚开始就需要用到IIS及WEBSERVICE,折腾了我一周,深表恶心。关于IIS及WEBSERVICE的问题,在上两篇博

客中已做过介绍;

二 ORACLE数据库的初步认识:

ORACLE也折腾我将近一周,也很恶心,远远没有SQL SERVER用起来顺手。我目前的认识有限,网上说它是多

进程多线程的,而SQLSERVER是单进程,多线程的。ORACLE默认的有许多用户,(例如SCOTT,SYS。)在这些

用户中有它们各自的表,索引之类的。

三 C#连接ORACLE:

关于连接代码,网上多的是,在此我也写在这吧。

头部添加下面两句话

using System.Data;

using System.Data.OracleClient;

添加一个按钮,添加代码如下:

string ConnectionString = "Data Source=orcl;user=scott;password=wu001";//写连接串

OracleConnection conn = new OracleConnection(ConnectionString);//创建一个新连接

try

{

conn.Open();

OracleCommand cmd = conn.CreateCommand();

cmd.CommandText = "insert into test values(4,'f')";//在这儿写sql语句

cmd.ExecuteNonQuery();

}

catch (Exception ee)

{

MessageBox.Show(ee.Message); //如果有错误,输出错误信息

}

finally

{

conn.Close(); //关闭连接

}

我需要说明三点:

1 添加using System.Data.OracleClient;这句话,如果你直接写的可能是没有的。按如下方法添加即可,在  项目名称上点右键,添加引用,在.NET选项卡找到System.Data.OracleClient,确定即可,然后再在头部添

加using System.Data.OracleClient;

2 最好写上MessageBox.Show(ee.Message);这句话,因为如果连接不成功出现异常,这句话即可提示你错误在  那里,百度就O了。在我做的过程中,帮了我大忙。

然后把代码写在WEBSERVICE的页面即可,上面的代码是我在C#的WINDOWS应用程序中调试的,我确保无误后  直接简化如下,写在WERSERVICE的页面里。

[WebMethod]

public void LinkOracle()

{

string ConnectionString = "Data Source=orcl;user=scott;password=wu001";//写连接串

OracleConnection conn = new OracleConnection(ConnectionString);//创建一个新连接

conn.Open();

OracleCommand cmd = conn.CreateCommand();

cmd.CommandText = "insert into test values(4,'f')";//在这儿写sql语句

cmd.ExecuteNonQuery();

不要以为我这段代码不够健壮,可是如果没错的话就不用考虑健壮性的问题。然后添加开始生成网站,发布网站即可。我用VS自带的HTTP方法调用方法是没错的。可是用MFC添加引用时就不行了。纠结了10分钟,回来再在IIS的添加虚拟目录后,在此浏览就错了。后面的介绍具体的解决办法,耐心耐心,哈哈。

3 string ConnectionString = "Data Source=orcl;user=scott;password=wu001";的具体解释:

DataSource 即为默认的全局数据名。建议大家在装ORACL的时候就创建数据库。在安装目录下的的NETWORK里的ADMIN里的tnsnames.ora文件中,用记事本打开。我的内容如下:DataSource即为这里的ORCL,写上去即可。

# tnsnames.ora Network Configuration File: D:\oracle\product\10.1.0\db_1\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = abae3bcbcc0c47e)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)

4 在虚拟目录中,浏览servece.asmx时,报错,需要oracle客户端8.7.1上以上的版本.不要惊慌,按如下方法解决即可.

System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。

文件夹没有显示'安全’,按照如下操作即可调出。

第一种方法:打开我的电脑——工具——文件夹选项——查看——使用简单文件夹共享前的对勾取掉一切就ok!

第二种方法:WIN+R打开运行——输入secpol.msc-----本地策略——安全选项——网络访问——本地用户共享安全模式——改为经典就ok!

要解决以上问题,只要给Authenticated Users 组加上访问Oracle Home目录的权限即可

1、以Administrator权限登录Windows

2、启动Window 资源浏览器找到ORACLE_HOME目录,如C:\Oracle\ora92

3、右键弹出菜单,选择该目录共享与安全(Win2000下要点击属性)

4、点击 “安全” 页签

5、在组和用户名称列表中点击“Authenticated Users” 项.

6、在该用户的权限列表中,将“读取和运行”的选择框置为不选中状态

7、再次点击“读取和运行”的选择框,将其设置为选中状态

8、点击“高级”按钮并在权限项目中确定“Authenticated Users” 是否拥有“读取并运行”权限并应用于“该文件夹,及子文件夹和文件”. 如果不是,双击这样,并确保权限可以“应用于” “该文件夹,及子文件夹和文件”. 该项非常重要你一定要核查.

9、点击“确定” 按钮

10、重启动, 以使得所有的修改生效.

=============================================================================

注意,权限设置好后,不用机器重启的,直接IIS重启下就行了,方法,开始-运行-CMD-IISRESET

四 MFC应用程序引用WEBSERVICE:

我用的VS2005,没出现网上说的添加WEB引用是灰色的问题。在项目名称上点击右键,添加WEB引用即可。

因是我是在本机上,所以点击查看本地的引用即可。输入引用名,确定。而后,会有生成的对应的.h文件,

拖入头文件中.我们在些再弄一个按钮,在其对应的函数中添加如下代码:

CoInitialize(NULL);

HRESULT hr = S_OK;

CService *ws = new CService;

hr = ws->LinkOracle();

if (S_OK==hr)

{

AfxMessageBox("insert ok");

}

else

{

AfxMessageBox("insert error");

}

CoUninitialize();

当然.cpp头中应该包含WEBSEVICE对应的头文件,如下:

#include "WebService.h"

using namespace Service;

到此,一个用VS下用webservice连接oracle即O了.严谨起见,哈哈,补充一下:

我已解锁scott用户,在其下建表test,建表命令如下:create table test(id number(4),name varchar2(5)).

在用oracle创建数据库时提示有口令管理,那时解锁用户即可,可设置密码(我的密码是wu001).我用的是10g,oracle恶心的是密码必须包含字母.

这样就O拉.

打开 sql/plus,用SCOTT进入,输入select *from test;()

d507326736633a136cd76fa739bc8738.png

主机字符串这行不用管,我也不知道是干啥的.那位清楚,可给我留言说声,欢迎交流哪.

即可看到插入成功拉.

贴个图:

e37ba955ba1e3059beaf28cf4a7a6870.png

以上是我的一些体会,希望对想学习的人有所帮助,大家相互交流,一起进步哈。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值