久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5252|回復: 0
打印 上一主題 下一主題
收起左側

通過WEBSERVICE連接ORACLE

[復制鏈接]
跳轉到指定樓層
樓主
ID:70976 發表于 2014-12-25 23:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
經過一周的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;()


主機字符串這行不用管,我也不知道是干啥的.那位清楚,可給我留言說聲,歡迎交流哪.
即可看到插入成功拉.
貼個圖:


以上是我的一些體會,希望對想學習的人有所幫助,大家相互交流,一起進步哈。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一二三 | 欧美一级在线观看 | 大陆一级毛片免费视频观看 | 久久久99精品免费观看 | 97精品超碰一区二区三区 | 午夜精品一区二区三区在线观看 | 亚洲啊v在线 | 国产精品久久 | 无吗视频| 日韩视频一区在线观看 | 毛片1 | 精品国产乱码久久久久久丨区2区 | 国产精品jizz在线观看老狼 | 一区二区精品 | 中文字幕不卡在线观看 | 九九热在线精品视频 | 国产精品免费一区二区三区四区 | 亚洲精品成人 | 久久精品亚洲精品 | 国产日批| 在线观看亚洲精品 | 成人在线a | 国产精品成人国产乱一区 | 国产精品视频久久久 | 成人国产在线视频 | 久久精彩 | 精品中文视频 | 欧美精品一区二区三区四区 在线 | 中文字幕精 | 毛片一区二区三区 | 免费成人毛片 | 亚洲一区二区视频 | 91免费小视频 | 欧美精品91爱爱 | 男女黄网站 | 欧美日韩国产精品一区 | 亚洲精品国产一区 | 福利精品| 成人不卡 | 黄色在线网站 | 极情综合网 |