程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> ASP.NET訪問Oracle數據庫 執行SQL語句過程

ASP.NET訪問Oracle數據庫 執行SQL語句過程

編輯:Oracle數據庫基礎

Web服務器的配置:

1.安裝Oracle 客戶端

參考《Oracle 9i & PLSQL 全簡體中文版數據庫安裝過程(圖解)》,在選擇安裝的時候僅安裝客戶端即可

2.為安裝客戶端的服務器配置Net 服務

參考 《Oracle 9i/10g 數據庫 創建數據庫 Net 配置 創建表 SQL查詢 創建存儲過程》

3.新建一個用戶,並賦予OBA角色

1.通過PL SQL 建立用戶

使用SysDBA系統用戶登陸 PLSQL ,建立一個用戶

賦給此用戶OBA角色。 

2.通過Enterprise Manager Console 建立用戶

4.測試確認存儲過程是正常的

可以右鍵點擊存儲過程,選擇測試,看是否能夠達到預期的效果

ASP.Net訪問Oracle 的簡單例子

1.為靈活設置,將連接字符寫在web.config文件中

                        字符串說明:       需要定義Net服務:    注意:這種連接方法可能會出現權限問題請參考 我的另一篇隨筆解決“System.Data.OracleClIEnt 需要 Oracle 客戶端軟件 8.1.7 或更高版本。”(圖)       無需定義Net服務:   注意: 這種方法有一個問題是,無法想上面的服務那樣一次定義服務,在服務下面再定義多個連接

2.為Web 應用程序 添加 System.Data.OracleClIEnt 程序集引用


3.下面是測試的程序,ASPx 文件代碼如下

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AspNetOra._Default" %>




    


    

調用一個Oracle連接並執行一條語句測試是否成功

調用給SQL語句執行綁定

輸入輸出參數的存儲過程調用

執行返回數據集的Oracle存儲過程

aspx.cs 文件代碼如下 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClIEnt; using System.Data.OracleClIEnt; namespace ASPNetOra { public partial class _Default : System.Web.UI.Page { System.Data.OracleClient.OracleConnection objConn; //聲明一個OracleConnection對象 System.Data.OracleClIEnt.OracleCommand objCmd; //聲明一個OracleCommand對象 string strcon = System.Configuration.ConfigurationManager.APPSettings["Oracleconn"]; //從Web.config 文件裡調用數據庫連接字符串 protected void Page_Load(object sender, EventArgs e) { } /// /// 測試連接 /// /// /// protected void Button1_Click(object sender, EventArgs e) { try { objConn = new OracleConnection(strcon); //用連接字符串,實例化連接對象 objConn.Open(); //打開數據庫連接 string strSQL = "select * from sys.test1"; //查詢sys建立的test1表的內容 因為我現在用的登錄用戶不是sys了 objCmd = new OracleCommand(strSQL, objConn); //用命令和連接對象建立命令實例 objCmd.ExecuteNonQuery(); objConn.Close(); this.Label1.Text = "成功"; } catch { this.Label1.Text = "失敗"; } } /// /// 執行SQL 語句返回數據集合 /// /// /// protected void Button2_Click(object sender, EventArgs e) { objConn = new OracleConnection(strcon); //用連接字符串,實例化連接對象 objConn.Open(); //打開數據庫連接 System.Data.OracleClIEnt.OracleDataAdapter adapter = new OracleDataAdapter("select * from sys.test1", objConn); System.Data.DataSet ds = new System.Data.DataSet(); adapter.Fill(ds); GridView1.DataSource = ds.Tables[0].DefaultView; GridVIEw1.DataBind(); } /// /// 存儲過程輸入、輸出參數 /// /// 存儲過程定義如下: /// /// create or replace procedure getName(name_out out varchar2 ,id_in in varchar2) is /// begin /// select NAME into name_out from test1 where id = id_in; /// end getName; /// /// /// /// protected void Button3_Click(object sender, EventArgs e) { objConn = new OracleConnection(strcon); //用連接字符串,實例化連接對象 objConn.Open(); //打開數據庫連接 OracleCommand cmd = new OracleCommand("getName", objConn); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.Add("name_out", OracleType.VarChar, 20); //輸出參數,注意名字要與存儲過程一致 cmd.Parameters["name_out"].Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add("id_in", OracleType.VarChar, 20); //輸入參數,注意名字要與存儲過程一致 cmd.Parameters["id_in"].Direction = System.Data.ParameterDirection.Input; cmd.Parameters["id_in"].Value = "1"; //給輸入參數賦值 cmd.ExecuteNonQuery(); this.TextBox1.Text = cmd.Parameters["name_out"].Value.ToString(); //獲得輸出參數 } /// /// Oracle存儲過程並不直接返回記錄集,記錄集以游標的形式通過參數返回。一個包(Packages可以包含多個存儲過程, /// 訪問存儲過程時采用“包名.存儲過程名”的方式。 /// 存儲過程是我上一個隨筆寫的Test,但是上一個存儲過程是用Sys建立的,在這裡我又重新用當前用戶建立的一個屬於這個用戶的包 /// /// 包定義如下: /// 包頭: /// create or replace package test is /// TYPE MYCURSOR IS REF CURSOR; /// PROCEDURE GETLIST(cur_OUT OUT MYCURSOR); /// end test; /// /// /// /// 包體: /// create or replace package body test is /// PROCEDURE GETLIST(cur_OUT OUT MYCURSOR) AS /// BEGIN /// OPEN cur_OUT FOR SELECT * FROM test1; /// END; /// end test; /// /// /// /// /// /// /// /// protected void Button4_Click(object sender, EventArgs e) { objConn = new OracleConnection(strcon); //用連接字符串,實例化連接對象 objConn.Open(); //打開數據庫連接 OracleCommand cmd = new OracleCommand("test.GETLIST", objConn); cmd.Parameters.Add("cur_OUT", OracleType.Cursor); //注意這裡的類型 cmd.Parameters["cur_OUT"].Direction = System.Data.ParameterDirection.Output; cmd.CommandType = System.Data.CommandType.StoredProcedure; OracleDataAdapter da = new OracleDataAdapter(cmd); System.Data.DataSet ds = new System.Data.DataSet(); da.Fill(ds); GridView2.DataSource = ds.Tables[0].DefaultView; GridVIEw2.DataBind(); } } }


調用結果如下圖:

 

【編輯推薦】

  1. Oracle數據塊原理深入剖析
  2. 影響SQL Server性能的三個關鍵點
  3. Oracle數據庫設計提升性能的五條法則


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved