新聞中心
Web服務(wù)器的配置:

創(chuàng)新互聯(lián)建站從2013年創(chuàng)立,先為米林等服務(wù)建站,米林等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為米林企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
1.安裝Oracle 客戶(hù)端
參考《Oracle 9i & PLSQL 全簡(jiǎn)體中文版數(shù)據(jù)庫(kù)安裝過(guò)程(圖解)》,在選擇安裝的時(shí)候僅安裝客戶(hù)端即可
2.為安裝客戶(hù)端的服務(wù)器配置Net 服務(wù)
參考 《Oracle 9i/10g 數(shù)據(jù)庫(kù) 創(chuàng)建數(shù)據(jù)庫(kù) Net 配置 創(chuàng)建表 SQL查詢(xún) 創(chuàng)建存儲(chǔ)過(guò)程》
3.新建一個(gè)用戶(hù),并賦予OBA角色
1.通過(guò)PL SQL 建立用戶(hù)
使用SysDBA系統(tǒng)用戶(hù)登陸 PLSQL ,建立一個(gè)用戶(hù)
賦給此用戶(hù)OBA角色。
2.通過(guò)Enterprise Manager Console 建立用戶(hù)
4.測(cè)試確認(rèn)存儲(chǔ)過(guò)程是正常的
可以右鍵點(diǎn)擊存儲(chǔ)過(guò)程,選擇測(cè)試,看是否能夠達(dá)到預(yù)期的效果
#p#
ASP.NET訪問(wèn)Oracle 的簡(jiǎn)單例子
1.為靈活設(shè)置,將連接字符寫(xiě)在web.config文件中
字符串說(shuō)明: 需要定義Net服務(wù):
注意:這種連接方法可能會(huì)出現(xiàn)權(quán)限問(wèn)題請(qǐng)參考 我的另一篇隨筆解決“System.Data.OracleClient 需要 Oracle 客戶(hù)端軟件 8.1.7 或更高版本。”(圖) 無(wú)需定義Net服務(wù):
注意: 這種方法有一個(gè)問(wèn)題是,無(wú)法想上面的服務(wù)那樣一次定義服務(wù),在服務(wù)下面再定義多個(gè)連接
2.為Web 應(yīng)用程序 添加 System.Data.OracleClient 程序集引用
3.下面是測(cè)試的程序,aspx 文件代碼如下
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AspNetOra._Default" %>
調(diào)用一個(gè)Oracle連接并執(zhí)行一條語(yǔ)句測(cè)試是否成功
調(diào)用給SQL語(yǔ)句執(zhí)行綁定
輸入輸出參數(shù)的存儲(chǔ)過(guò)程調(diào)用
執(zhí)行返回?cái)?shù)據(jù)集的Oracle存儲(chǔ)過(guò)程
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; //聲明一個(gè)OracleConnection對(duì)象
System.Data.OracleClient.OracleCommand objCmd; //聲明一個(gè)OracleCommand對(duì)象
string strcon = System.Configuration.ConfigurationManager.AppSettings["oracleconn"]; //從Web.config 文件里調(diào)用數(shù)據(jù)庫(kù)連接字符串
protected void Page_Load(object sender, EventArgs e)
{
}
///
/// 測(cè)試連接
///
///
///
protected void Button1_Click(object sender, EventArgs e)
{
try
{
objConn = new OracleConnection(strcon); //用連接字符串,實(shí)例化連接對(duì)象
objConn.Open(); //打開(kāi)數(shù)據(jù)庫(kù)連接
string strSQL = "select * from sys.test1"; //查詢(xún)sys建立的test1表的內(nèi)容 因?yàn)槲椰F(xiàn)在用的登錄用戶(hù)不是sys了
objCmd = new OracleCommand(strSQL, objConn); //用命令和連接對(duì)象建立命令實(shí)例
objCmd.ExecuteNonQuery();
objConn.Close();
this.Label1.Text = "成功";
}
catch
{
this.Label1.Text = "失敗";
}
}
///
/// 執(zhí)行SQL 語(yǔ)句返回?cái)?shù)據(jù)集合
///
///
///
protected void Button2_Click(object sender, EventArgs e)
{
objConn = new OracleConnection(strcon); //用連接字符串,實(shí)例化連接對(duì)象
objConn.Open(); //打開(kāi)數(shù)據(jù)庫(kù)連接
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();
}
///
/// 存儲(chǔ)過(guò)程輸入、輸出參數(shù)
///
/// 存儲(chǔ)過(guò)程定義如下:
///
/// 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); //用連接字符串,實(shí)例化連接對(duì)象
objConn.Open(); //打開(kāi)數(shù)據(jù)庫(kù)連接
OracleCommand cmd = new OracleCommand("getName", objConn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add("name_out", OracleType.VarChar, 20); //輸出參數(shù),注意名字要與存儲(chǔ)過(guò)程一致
cmd.Parameters["name_out"].Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add("id_in", OracleType.VarChar, 20); //輸入?yún)?shù),注意名字要與存儲(chǔ)過(guò)程一致
cmd.Parameters["id_in"].Direction = System.Data.ParameterDirection.Input;
cmd.Parameters["id_in"].Value = "1"; //給輸入?yún)?shù)賦值
cmd.ExecuteNonQuery();
this.TextBox1.Text = cmd.Parameters["name_out"].Value.ToString(); //獲得輸出參數(shù)
}
///
/// Oracle存儲(chǔ)過(guò)程并不直接返回記錄集,記錄集以游標(biāo)的形式通過(guò)參數(shù)返回。一個(gè)包(Packages可以包含多個(gè)存儲(chǔ)過(guò)程,
/// 訪問(wèn)存儲(chǔ)過(guò)程時(shí)采用“包名.存儲(chǔ)過(guò)程名”的方式。
/// 存儲(chǔ)過(guò)程是我上一個(gè)隨筆寫(xiě)的Test,但是上一個(gè)存儲(chǔ)過(guò)程是用Sys建立的,在這里我又重新用當(dāng)前用戶(hù)建立的一個(gè)屬于這個(gè)用戶(hù)的包
///
/// 包定義如下:
/// 包頭:
/// 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); //用連接字符串,實(shí)例化連接對(duì)象
objConn.Open(); //打開(kāi)數(shù)據(jù)庫(kù)連接
OracleCommand cmd = new OracleCommand("test.GETLIST", objConn);
cmd.Parameters.Add("cur_OUT", OracleType.Cursor); //注意這里的類(lèi)型
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();
}
}
}
調(diào)用結(jié)果如下圖:
責(zé)任編輯:彭凡
來(lái)源: cnblog ASP.NET SQL Oracle
文章題目:ASP.NET訪問(wèn)Oracle數(shù)據(jù)庫(kù)執(zhí)行SQL語(yǔ)句過(guò)程
網(wǎng)頁(yè)鏈接:http://m.fisionsoft.com.cn/article/djedded.html


咨詢(xún)
建站咨詢(xún)
