Asp.Net访问Oracle 数据库执行SQL语句和调用存储过程
2012-09-07 14:52
1006 查看
Asp.Net访问Oracle
数据库执行SQL语句和调用存储过程
http://space.itpub.net/12639172/viewspace-564910#xspace-itemform
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.测试确认存储过程是正常的
可以右键点击存储过程,选择测试,看是否能够达到预期的效果
ITPUB个人空间 K\*k6m
N"u
Asp.Net 访问 Oracle
的简单例子
1.为灵活设置,将连接字符写在web.config文件中
<appSettings>
<addkey="oracleconn"value="User
ID=terryfeng;Password=frt_2007;DataSource=test;"/>
<addkey="oracleconn"value="User
ID=terryfeng;Password=frt_2007;DataSource=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL =TCP)(HOST=192.168.1.200)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=test.finemoon)))"/>
</appSettings>
字符串说明:
需要定义Net服务: <addkey="参数名"value="User
ID=用户名;Password=用户密码;Data Source=数据源;"/>
注意:这种连接方法可能会出现权限问题请参考 我的另一篇随笔解决“System.Data.OracleClient
需要 Oracle 客户端软件8.1.7
或更高版本。”(图)
无需定义Net服务: <addkey="参数名"value="User
ID=用户名;Password=用户密码;Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = 协议)(HOST=主机)(PORT=端口)))(CONNECT_DATA=(SERVICE_NAME=服务名)))"/>
注意: 这种方法有一个问题是,无法想上面的服务那样一次定义服务,在服务下面再定义多个连接
2.为Web
应用程序添加 System.Data.OracleClient
程序集引用
3.下面是测试的程序,
aspx 文件代码如下
<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="AspNetOra._Default"%><!DOCTYPEhtml
PUBLIC"-//W3C//DTD XHTML 1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
</head>
<body>
<form.id="form1"runat="server">
<div>
<p>调用一个Oracle连接并执行一条语句测试是否成功<asp:LabelID="Label1"runat="server"ForeColor="Red"Text=""></asp:Label>
<br/>
<asp:ButtonID="Button1"runat="server"OnClick="Button1_Click"Text="测试连接是否成功"
/>
</p>
<p>调用给SQL语句执行绑定<br/>
<asp:GridViewID="GridView1"runat="server">
</asp:GridView>
<br/>
<asp:ButtonID="Button2"runat="server"OnClick="Button2_Click"Text="返回数据集合,绑定Gridview"
/>
</p>
<p>输入输出参数的存储过程调用<br/>
<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox>
<br/>
<asp:ButtonID="Button3"runat="server"Text="z输入输出参数的存储过程"OnClick="Button3_Click"
/>
</p>
<p>执行返回数据集的Oracle存储过程<br/>
<asp:GridViewID="GridView2"runat="server">
</asp:GridView>
<asp:ButtonID="Button4"runat="server"Text="执行存储过程返回数据集"OnClick="Button4_Click"
/>
</p>
</div>
</form>
</body>
</html>
aspx.cs 文件代码如下
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Data.SqlClient;usingSystem.Data.OracleClient;namespaceAspNetOra
{public partial class_Default: System.Web.UI.Page{
System.Data.OracleClient.OracleConnectionobjConn;//声明一个OracleConnection对象System.Data.OracleClient.OracleCommandobjCmd;//声明一个OracleCommand对象stringstrcon
= System.Configuration.ConfigurationManager.AppSettings["oracleconn"];//从Web.config
文件里调用数据库连接字符串protected voidPage_Load(objectsender,EventArgse)
{
}///<summary>
///测试连接/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>protected voidButton1_Click(objectsender,EventArgse)
{try{
bjConn =newOracleConnection(strcon);//用连接字符串,实例化连接对象objConn.Open();//打开数据库连接stringstrSQL
="select * from sys.test1";//查询sys建立的test1表的内容 因为我现在用的登录用户不是sys了objCmd=newOracleCommand(strSQL,
objConn);//用命令和连接对象建立命令实例objCmd.ExecuteNonQuery();
objConn.Close();this.Label1.Text ="成功";
}catch{this.Label1.Text ="失败";
}
}///<summary>
///执行SQL语句返回数据集合///</summary>
/// <param name="sender"></param>
/// <param name="e"></param>protected voidButton2_Click(objectsender,EventArgse)
{
bjConn =newOracleConnection(strcon);//用连接字符串,实例化连接对象objConn.Open();//打开数据库连接System.Data.OracleClient.OracleDataAdapteradapter
=newOracleDataAdapter("select * from sys.test1", objConn);
System.Data.DataSetds =newSystem.Data.DataSet();
adapter.Fill(ds);
GridView1.DataSource =ds.Tables[0].DefaultView;
GridView1.DataBind();
}///<summary>
///存储过程输入、输出参数///
///存储过程定义如下:///
///create orreplace 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;///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>protected voidButton3_Click(objectsender,EventArgse)
{
bjConn =newOracleConnection(strcon);//用连接字符串,实例化连接对象objConn.Open();//打开数据库连接OracleCommandcmd
=newOracleCommand("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();//获得输出参数}///
<summary>
///Oracle存储过程并不直接返回记录集,记录集以游标的形式通过参数返回。一个包(Packages可以包含多个存储过程,///访问存储过程时采用“包名.存储过程名”的方式。///存储过程是我上一个随笔写的Test,但是上一个存储过程是用Sys建立的,在这里我又重新用当前用户建立的一个属于这个用户的包///
///包定义如下:///包头:///create
orreplace 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;///
///
///
///
///
/// </summary>
/// <paramname="sender"></param>
/// <param name="e"></param>protected voidButton4_Click(objectsender,EventArgse)
{
bjConn =newOracleConnection(strcon);//用连接字符串,实例化连接对象objConn.Open();//打开数据库连接OracleCommandcmd
=newOracleCommand("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;OracleDataAdapterda
=newOracleDataAdapter(cmd);
System.Data.DataSetds =newSystem.Data.DataSet();
da.Fill(ds);
GridView2.DataSource =ds.Tables[0].DefaultView;
GridView2.DataBind();
}
}
}
调用结果如下图:
程序下载:AspNetOra.rar
数据库执行SQL语句和调用存储过程
http://space.itpub.net/12639172/viewspace-564910#xspace-itemform
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.测试确认存储过程是正常的
可以右键点击存储过程,选择测试,看是否能够达到预期的效果
ITPUB个人空间 K\*k6m
N"u
Asp.Net 访问 Oracle
的简单例子
1.为灵活设置,将连接字符写在web.config文件中
<appSettings>
<addkey="oracleconn"value="User
ID=terryfeng;Password=frt_2007;DataSource=test;"/>
<addkey="oracleconn"value="User
ID=terryfeng;Password=frt_2007;DataSource=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL =TCP)(HOST=192.168.1.200)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=test.finemoon)))"/>
</appSettings>
字符串说明:
需要定义Net服务: <addkey="参数名"value="User
ID=用户名;Password=用户密码;Data Source=数据源;"/>
注意:这种连接方法可能会出现权限问题请参考 我的另一篇随笔解决“System.Data.OracleClient
需要 Oracle 客户端软件8.1.7
或更高版本。”(图)
无需定义Net服务: <addkey="参数名"value="User
ID=用户名;Password=用户密码;Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = 协议)(HOST=主机)(PORT=端口)))(CONNECT_DATA=(SERVICE_NAME=服务名)))"/>
注意: 这种方法有一个问题是,无法想上面的服务那样一次定义服务,在服务下面再定义多个连接
2.为Web
应用程序添加 System.Data.OracleClient
程序集引用
3.下面是测试的程序,
aspx 文件代码如下
<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="AspNetOra._Default"%><!DOCTYPEhtml
PUBLIC"-//W3C//DTD XHTML 1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
</head>
<body>
<form.id="form1"runat="server">
<div>
<p>调用一个Oracle连接并执行一条语句测试是否成功<asp:LabelID="Label1"runat="server"ForeColor="Red"Text=""></asp:Label>
<br/>
<asp:ButtonID="Button1"runat="server"OnClick="Button1_Click"Text="测试连接是否成功"
/>
</p>
<p>调用给SQL语句执行绑定<br/>
<asp:GridViewID="GridView1"runat="server">
</asp:GridView>
<br/>
<asp:ButtonID="Button2"runat="server"OnClick="Button2_Click"Text="返回数据集合,绑定Gridview"
/>
</p>
<p>输入输出参数的存储过程调用<br/>
<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox>
<br/>
<asp:ButtonID="Button3"runat="server"Text="z输入输出参数的存储过程"OnClick="Button3_Click"
/>
</p>
<p>执行返回数据集的Oracle存储过程<br/>
<asp:GridViewID="GridView2"runat="server">
</asp:GridView>
<asp:ButtonID="Button4"runat="server"Text="执行存储过程返回数据集"OnClick="Button4_Click"
/>
</p>
</div>
</form>
</body>
</html>
aspx.cs 文件代码如下
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Data.SqlClient;usingSystem.Data.OracleClient;namespaceAspNetOra
{public partial class_Default: System.Web.UI.Page{
System.Data.OracleClient.OracleConnectionobjConn;//声明一个OracleConnection对象System.Data.OracleClient.OracleCommandobjCmd;//声明一个OracleCommand对象stringstrcon
= System.Configuration.ConfigurationManager.AppSettings["oracleconn"];//从Web.config
文件里调用数据库连接字符串protected voidPage_Load(objectsender,EventArgse)
{
}///<summary>
///测试连接/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>protected voidButton1_Click(objectsender,EventArgse)
{try{
bjConn =newOracleConnection(strcon);//用连接字符串,实例化连接对象objConn.Open();//打开数据库连接stringstrSQL
="select * from sys.test1";//查询sys建立的test1表的内容 因为我现在用的登录用户不是sys了objCmd=newOracleCommand(strSQL,
objConn);//用命令和连接对象建立命令实例objCmd.ExecuteNonQuery();
objConn.Close();this.Label1.Text ="成功";
}catch{this.Label1.Text ="失败";
}
}///<summary>
///执行SQL语句返回数据集合///</summary>
/// <param name="sender"></param>
/// <param name="e"></param>protected voidButton2_Click(objectsender,EventArgse)
{
bjConn =newOracleConnection(strcon);//用连接字符串,实例化连接对象objConn.Open();//打开数据库连接System.Data.OracleClient.OracleDataAdapteradapter
=newOracleDataAdapter("select * from sys.test1", objConn);
System.Data.DataSetds =newSystem.Data.DataSet();
adapter.Fill(ds);
GridView1.DataSource =ds.Tables[0].DefaultView;
GridView1.DataBind();
}///<summary>
///存储过程输入、输出参数///
///存储过程定义如下:///
///create orreplace 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;///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>protected voidButton3_Click(objectsender,EventArgse)
{
bjConn =newOracleConnection(strcon);//用连接字符串,实例化连接对象objConn.Open();//打开数据库连接OracleCommandcmd
=newOracleCommand("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();//获得输出参数}///
<summary>
///Oracle存储过程并不直接返回记录集,记录集以游标的形式通过参数返回。一个包(Packages可以包含多个存储过程,///访问存储过程时采用“包名.存储过程名”的方式。///存储过程是我上一个随笔写的Test,但是上一个存储过程是用Sys建立的,在这里我又重新用当前用户建立的一个属于这个用户的包///
///包定义如下:///包头:///create
orreplace 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;///
///
///
///
///
/// </summary>
/// <paramname="sender"></param>
/// <param name="e"></param>protected voidButton4_Click(objectsender,EventArgse)
{
bjConn =newOracleConnection(strcon);//用连接字符串,实例化连接对象objConn.Open();//打开数据库连接OracleCommandcmd
=newOracleCommand("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;OracleDataAdapterda
=newOracleDataAdapter(cmd);
System.Data.DataSetds =newSystem.Data.DataSet();
da.Fill(ds);
GridView2.DataSource =ds.Tables[0].DefaultView;
GridView2.DataBind();
}
}
}
调用结果如下图:
程序下载:AspNetOra.rar
相关文章推荐
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- 在ASP.NET中用存储过程执行SQL语句
- ASP.NET访问Oracle数据库 执行SQL语句过程
- 在ASP.NET中用存储过程执行SQL语句
- sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbname"。
- [Database]创建存储过程并在ASP.NET中的调用带参数的存储过程与及调用带参数的SQL语句对比
- C# asp.net SQL存储过程写法Insert 插入语句,及其在asp.net中的调用方法
- oracle存储过程中如何执行动态SQL语句
- sql 存储过程 几个 简单例子,及在asp.net(C#)中调用存储过程的代码
- oracle存储过程中如何执行动态SQL语句
- MySQL存储过程详解 mysql 存储过程mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored
- oracle 存储过程执行可输入sql语句并返回结果集
- EXTASPNET C# ASP.NET sql server 调用存储过程超时,解决方法
- 通用SQL存储过程分页以及asp.net后台调用的方法
- asp.net 中调用SQL带输入输出的存储过程
- oracle 解除 sql语句、存储过程在执行中造成的锁
- 给数据库用户设置存储过程执行权限的SQL语句