asp.net oracle 环境,Asp.Net Oracle数据的通用操作类

在一个项目中,可能用到2种数据,比如说ORACLE ,MS_SQLSERVER 同时要用到,MS-SQL的数据通用类在很多的教程中都有现成的例子和代码,但是ORACLE比较少见,但是本次项目中正好用到,贴出来和大家一起共享。

这里用OraDbHelper.cs做常见的四种数据操作

一 ExecuteDataTable 返回到内存数据表

二 SqlDataReader 直接读数据

三 ExecuteScalar 获得一条数据

四 ExecuteNonQuery 对数据库执行增删改操作

环境:客户端WIN XP 安装的是ORACLE 8.17客户端

数据库服务器是:Red Hat Enterprise Linux AS 安装的是Oracle Database 10g

SQL*Plus: Release 8.1.7.0.0 - Production on 星期六 12月 19 18:10:19 2009

(c) Copyright 2000 Oracle Corporation. All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

首先 OraDbHelper.cs

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using System.Data.OracleClient;

namespace xjy.DAL

{

///

/// OraDbHelper 对ORACLE 数据库操作的通用类

/// 作者;薛佳岳

/// 日期:2009-12-18

///

public class OraDbHelper

{

private string connectionString;

///

/// 设置数据库字符串的连接

///

public string ConnectionString

{

set { connectionString = value; }

}

public OraDbHelper(string connectionString)

{

this.connectionString = connectionString;

}

#region ExecuteDataTable

///

/// 执行一个查询,并返回结果集

///

/// 要执行的查询SQL文本命令

/// 返回查询结果集

public DataTable ExecuteDataTable(string commandText)

{

return ExecuteDataTable(commandText, CommandType.Text, null);

}

///

/// 执行一个查询,并返回查询结果

///

/// 要执行的SQL语句

/// 要执行的查询语句的类型,如存储过程或者SQL文本命令

/// 返回查询结果集

public DataTable ExecuteDataTable(string commandText, CommandType commandType)

{

return ExecuteDataTable(commandText, commandType, null);

}

///

/// 执行一个查询,并返回查询结果

///

/// 要执行的SQL语句

/// 要执行的查询语句的类型,如存储过程或者SQL文本命令

/// PL-SQL 语句或存储过程的参数数组

///

public DataTable ExecuteDataTable(string commandText, CommandType commandType, params OracleParameter[] parameters)

{

DataTable data = new DataTable();//实例化DataTable,用于装载查询结果集

using (OracleConnection connection = new OracleConnection(connectionString))

{

using (OracleCommand command = new OracleCommand(commandText, connection))

{

command.CommandType = commandType;//设置command的CommandType为指定的CommandType

//如果同时传入了参数,则添加这些参数

if (parameters != null)

{

foreach (OracleParameter parameter in parameters)

{

command.Parameters.Add(parameter);

}

}

//通过包含查询SQL的SqlCommand实例来实例化SqlDataAdapter

OracleDataAdapter adapter = new OracleDataAdapter(command);

adapter.Fill(data);//填充DataTable

}

}

return data;

}

#endregion ExecuteDataTable

#region ExecuteReader

///

/// 将 CommandText 发送到 Connection 并生成一个 OracleDataReader。

///

/// 要执行的查询SQL文本命令

///

public OracleDataReader ExecuteReader(string commandText)

{

return ExecuteReader(commandText, CommandType.Text, null);

}

///

/// 将 CommandText 发送到 Connection 并生成一个 OracleDataReader。

///

/// 要执行的SQL语句

/// 要执行的查询语句的类型,如存储过程或者SQL文本命令

///

public OracleDataReader ExecuteReader(string commandText, CommandType commandType)

{

return ExecuteReader(commandText, commandType, null);

}

///

/// 将 CommandText 发送到 Connection 并生成一个 OracleDataReader。

///

/// 要执行的SQL语句

/// 要执行的查询语句的类型,如存储过程或者SQL文本命令

/// Transact-SQL 语句或存储过程的参数数组

///

public OracleDataReader ExecuteReader(string commandText, CommandType commandType, OracleCommand[] parameters)

{

OracleConnection connection = new OracleConnection(connectionString);

OracleCommand command = new OracleCommand(commandText, connection);

//如果同时传入了参数,则添加这些参数

if (parameters != null)

{

foreach (OracleCommand parameter in parameters)

{

command.Parameters.Add(parameter);

}

}

connection.Open();

//CommandBehavior.CloseConnection参数指示关闭Reader对象时关闭与其关联的Connection对象

return command.ExecuteReader(CommandBehavior.CloseConnection);

}

#endregion ExecuteReader

#region ExecuteScalar

///

/// 从数据库中检索单个值(例如一个聚合值)。

///

/// 要执行的查询PL-SQL文本命令

///

public Object ExecuteScalar(string commandText)

{

return ExecuteScalar(commandText, CommandType.Text, null);

}

///

/// 从数据库中检索单个值(例如一个聚合值)。

///

/// 要执行的SQL语句

/// 要执行的查询语句的类型,如存储过程或者PL-SQL文本命令

///

public Object ExecuteScalar(string commandText, CommandType commandType)

{

return ExecuteScalar(commandText, commandType, null);

}

///

/// 从数据库中检索单个值(例如一个聚合值)。

///

/// 要执行的SQL语句

/// 要执行的查询语句的类型,如存储过程或者SQL文本命令

/// PL-SQL 语句或存储过程的参数数组

///

public Object ExecuteScalar(string commandText, CommandType commandType, OracleParameter[] parameters)

{

object result = null;

using (OracleConnection connection = new OracleConnection(connectionString))

{

using (OracleCommand command = new OracleCommand(commandText, connection))

{

command.CommandType = commandType;//设置command的CommandType为指定的CommandType

//如果同时传入了参数,则添加这些参数

if (parameters != null)

{

foreach (OracleParameter parameter in parameters)

{

command.Parameters.Add(parameter);

}

}

connection.Open();//打开数据库连接

result = command.ExecuteScalar();

}

}

return result;//返回查询结果的第一行第一列,忽略其它行和列

}

#endregion ExecuteScalar

#region ExecuteNonQuery

///

/// 对数据库执行增删改操作

///

/// 要执行的查询pl-sql文本命令

///

public int ExecuteNonQuery(string commandText)

{

return ExecuteNonQuery(commandText, CommandType.Text, null);

}

///

/// 对数据库执行增删改操作

///

/// 要执行的pl-sql语句

/// 要执行的查询语句的类型,如存储过程或者pl-sql文本命令

///

public int ExecuteNonQuery(string commandText, CommandType commandType)

{

return ExecuteNonQuery(commandText, commandType, null);

}

///

/// 对数据库执行增删改操作

///

/// 要执行的pl-sql语句

/// 要执行的查询语句的类型,如存储过程或者pl-sql文本命令

/// pl-sql 语句或存储过程的参数数组

/// 返回执行操作受影响的行数

public int ExecuteNonQuery(string commandText, CommandType commandType, OracleParameter[] parameters)

{

int count = 0;

using (OracleConnection connection = new OracleConnection(connectionString))

{

using (OracleCommand command = new OracleCommand(commandText, connection))

{

command.CommandType = commandType;//设置command的CommandType为指定的CommandType

//如果同时传入了参数,则添加这些参数

if (parameters != null)

{

foreach (OracleParameter parameter in parameters)

{

command.Parameters.Add(parameter);

}

}

connection.Open();//打开数据库连接

count = command.ExecuteNonQuery();

}

}

return count;//返回执行增删改操作之后,数据库中受影响的行数

}

#endregion ExecuteNonQuery

}

}

一测试datatable

前台代码

无标题页

后台代码

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using xjy.DAL;

using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

ConnectionStringSettings setting = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString1"];

string myStr = setting.ConnectionString;

OraDbHelper myora = new OraDbHelper(myStr);

DataTable t1 = new DataTable();

t1=myora.ExecuteDataTable("select art_no,descr from article where art_no<100");

GridView1.DataSource=t1;

GridView1.DataBind();

}

}

结果如图

20091220022045210.jpg

二 测试 SqlDataReader

前台代码不变

后台代码如下:

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using xjy.DAL;

using System.Data.SqlClient;

using System.Data.OracleClient;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

ConnectionStringSettings setting = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString1"];

string myStr = setting.ConnectionString;

OraDbHelper myora = new OraDbHelper(myStr);

OracleDataReader myDr = myora.ExecuteReader("select art_no,descr from article where art_no<100");

while (myDr.Read())

{

Response.Write("|" + myDr[0] + "|" + myDr[1]+"

");

Response.Write("____________________________________");

}

myDr.Close();

myDr.Dispose();

}

}

结果如图

20091220022046774.jpg

三测试ExecuteScalar前台代码

无标题页

后台代码

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using xjy.DAL;

using System.Data.SqlClient;

using System.Data.OracleClient;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

ConnectionStringSettings setting = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString1"];

string myStr = setting.ConnectionString;

OraDbHelper myora = new OraDbHelper(myStr);

string shuliang;

shuliang = myora.ExecuteScalar("select count(art_no) from article where art_no<100").ToString();

Label1.Text = shuliang;

}

}

结果如图:

20091220022046473.gif

四测试ExecuteNonQuery

前台代码:

无标题页

后台代码

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using xjy.DAL;

using System.Data.SqlClient;

using System.Data.OracleClient;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

ConnectionStringSettings setting = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString1"];

string myStr = setting.ConnectionString;

OraDbHelper myora = new OraDbHelper(myStr);

DataTable t1 = new DataTable();

Label1.Text = "更新前的值";

t1 = myora.ExecuteDataTable("select art_no,descr from article where art_no=8");

GridView1.DataSource = t1;

GridView1.DataBind();

if (myora.ExecuteNonQuery("update article set descr='更新描述测试值' where art_no=8")>0)

{

Label2.Text = "更新后的值";

t1 = myora.ExecuteDataTable("select art_no,descr from article where art_no=8");

GridView2.DataSource = t1;

GridView2.DataBind();

}

}

protected void Button1_Click(object sender, EventArgs e)

{

ConnectionStringSettings setting = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString1"];

string myStr = setting.ConnectionString;

OraDbHelper myora = new OraDbHelper(myStr);

DataTable t1 = new DataTable();

if (myora.ExecuteNonQuery("update article set descr='可怜可怜60ML/瓶' where art_no=8") > 0)

{

Label2.Text = "更新后的值";

t1 = myora.ExecuteDataTable("select art_no,descr from article where art_no=8");

GridView2.DataSource = t1;

GridView2.DataBind();

}

}

}

结果:

20091220022046602.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值