asp /asp.net c#链接Orcale 数据库的方案

本文介绍如何在ASP.NET环境中配置和连接Oracle数据库,包括配置客户端、编写连接字符串、创建连接类以及执行SQL语句等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,在web服务器上安装Oracle数据库客户端,这是连接Oracle数据库的基础(但,不一定是必须的)。

2,在客户端的Net Manager 中进行配置服务的名称,配置如图(这一点非常的重要以后的链接全都在这个服务名称的基础上进行的)

3,ASP链接服务的链接字符串和方法如下:

<%
connstr= "Provider=MSDAORA.1;Password=***;User ID=***;Data Source=ipcheck;"

set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
%>

4,ASP.net(C#) 链接数据库 可以使用这篇文章介绍的方式

添加

<appSettings>
<addkey="SysDSN"value="DataSource=ServerName;UserID=userid;Password=password;Unicode=True"/>
</appSettings>

再者,就可以添加一个myclass文件夹,之后在其中建个类文件,默认命名空间是myClass
类文件名为conn.cs
由于VS.NET2005不默认支持oracle数据库,所以要添加其引用:在解决方案资源管理器里添加引用:System.Data.OracleClient(仔细找找噢~在.NET选项卡中)
内容(不断更新):

1usingSystem;
2usingSystem.Data;
3usingSystem.Configuration;
4usingSystem.Web;
5usingSystem.Web.Security;
6usingSystem.Web.UI;
7usingSystem.Web.UI.WebControls;
8usingSystem.Web.UI.WebControls.WebParts;
9usingSystem.Web.UI.HtmlControls;
10usingSystem.Data.OracleClient;
11
12namespaceUser.Data
13{
14publicclassconn
15{
16
17构造函数#region构造函数
18/**////<summary>
19///构造函数(默认)
20///</summary>

21publicconn(){}
22
23/**////<summary>
24///构造函数
25///</summary>
26///<paramname="connString">连接字符串(类型:string)</param>
27///例子:"DataSource=ServerName;UserID=userid;Password=password;Unicode=True"

28publicconn(stringconnString)
29{
30this.ConnectionString=connString;
31}

32
33#endregion

34
35私有变量#region私有变量
36
37/**////<summary>
38///表示针对数据库执行的SQL语句或存储过程
39///</summary>

40privateSystem.Data.OracleClient.OracleCommandcmd;
41
42/**////<summary>
43///表示一个到数据库的打开的连接
44///</summary>

45privateSystem.Data.OracleClient.OracleConnectioncon;
46
47/**////<summary>
48///表示要在数据库中生成的事务
49///</summary>

50privateSystem.Data.OracleClient.OracleTransactiontran;
51
52/**////<summary>
53///表示用于填充System.Data.DataSet和更新数据库的一组数据命令和到数据库的连接。
54///</summary>

55privateSystem.Data.OracleClient.OracleDataAdapteradapter;
56
57/**////<summary>
58///提供从数据源读取数据行的只进流的方法
59///</summary>

60privateSystem.Data.OracleClient.OracleDataReaderreader;
61
62/**////<summary>
63///表示内存中数据的一个表
64///</summary>

65privateSystem.Data.DataTabledt;
66
67/**////<summary>
68///表示数据在内存中的缓存
69///</summary>

70privateSystem.Data.DataSetds;
71/**////<summary>
72///连接字符串
73///</summary>

74stringConnectionString="";
75
76/**////<summary>
77///返回与打开的数据库连接
78///</summary>

79privateSystem.Data.OracleClient.OracleConnectionopenedCon
80{
81get
82{
83this.openCon();//固定地打开数据库与之连接
84returnthis.con;
85}

86//connectiongString是由固定的,存放在Web.config文件的AppSetting节点下,因此无需set访问器
87}

88#endregion

89
90私有方法#region私有方法
91/**////<summary>
92///打开与数据库的连接
93///</summary>

94privatevoidopenCon()
95{
96try
97{
98if(this.con==null)
99{
100//使用using可以使该连接可以调用Dispose方法来释放资源
101//using(this.con=newOracleConnection())
102//{
103this.con=newOracleConnection();
104//设置数据库连接属性为web.config中的设置的值(默认)
105//或者设置为构造函数中指定的connString的值
106this.con.ConnectionString
107=(this.ConnectionString=="")?System.Configuration.ConfigurationManager.AppSettings["SysDSN"]:this.ConnectionString;
108this.con.Open();
109//}
110//System.Web.HttpContext.Current.Response.Write("数据库连接成功!");//Test
111}

112elseif(con.State==ConnectionState.Closed)
113{
114this.con.Open();
115}

116}

117catch
118{
119System.Web.HttpContext.Current.Response.Write("数据库连接失败,请与管理员联系!");
120System.Web.HttpContext.Current.Response.End();
121}

122}

123
124/**////<summary>
125///获取或设置将在其中执行System.Data.OracleClient.OracleCommand的
126///System.Data.OracleClient.OracleTransaction。
127///因为OracleConnection不支持并行事务。所以在添加事务前必须要检查是否为空!
128///</summary>

129privatevoidcheckTransaction()
130{
131if(this.tran!=null)
132{
133this.cmd.Transaction=this.tran;
134}

135}

136
137/**////<summary>
138///设置基本Command对象
139///</summary>
140///<paramname="sql"></param>

141privatevoidCreateCmd(stringsql)
142{
143//方法1
144this.cmd=newOracleCommand();
145this.checkTransaction();
146this.cmd.Connection=this.openedCon;
147this.cmd.CommandText=sql;
148
149//方法2
150//this.checkTransaction();
151//this.cmd=newOracleCommand(sql);
152//this.cmd.Connection=this.openedCon;
153
154//方法3
155//this.checkTransaction();
156//this.cmd=newOracleCommand(sql,this.openedCon);
157
158//方法4
159//this.cmd=newOracleCommand(sql,this.openedCon,this.tran);
160
161//方法5(Oracle中只支持.NET2.0以上版本)
162//this.cmd=this.openedCon.CreateCommand();
163//this.checkTransaction();
164//this.cmd.CommandText=sql;
165}

166
167#endregion

168
169公共方法#region公共方法
170
171/**////<summary>
172///开始事务
173///</summary>

174publicvoidBeginTransaction()
175{
176this.tran=this.openedCon.BeginTransaction();
177}

178/**////<summary>
179///提交事务
180///</summary>

181publicvoidCommit()
182{
183this.tran.Commit();
184}

185/**////<summary>
186///回滚事务
187///</summary>

188publicvoidRollBack()
189{
190this.tran.Rollback();
191}

192
193/**////<summary>
194///关闭与数据库的连接
195///</summary>

196publicvoidCloseCon()
197{
198if(this.openedCon!=null&&this.openedCon.State==ConnectionState.Open)
199{
200this.openedCon.Close();
201}

202}

203
204/**////<summary>
205///执行SQL语句
206///</summary>
207///<paramname="sql">SQL语句</param>
208///<returns>受影响的行数</returns>

209publicintDoSelectSql(stringsql)
210{
211this.CreateCmd(sql);
212returnthis.cmd.ExecuteNonQuery();
213}

214
215/**////<summary>
216///获得OracleDataReader对象
217///</summary>
218///<paramname="sql">SQL语句</param>
219///<returns>OracleDataReader对象</returns>

220publicSystem.Data.OracleClient.OracleDataReaderGetReader(stringsql)
221{
222this.CreateCmd(sql);
223this.reader=this.cmd.ExecuteReader();
224returnthis.reader;
225}

226
227/**////<summary>
228///获得DataTable
229///</summary>
230///<paramname="sql">SQL语句</param>
231///<returns>DataTable对象</returns>

232publicSystem.Data.DataTableGetDataTable(stringsql)
233{
234this.adapter=newOracleDataAdapter();
235this.dt=newDataTable();
236this.CreateCmd(sql);
237this.adapter.SelectCommand=this.cmd;
238this.adapter.Fill(this.dt);
239returnthis.dt;
240}

241
242/**////<summary>
243///获得DataSet(通过sql语句)
244///</summary>
245///<paramname="sql">SQL语句</param>
246///<returns>DataSet对象</returns>

247publicSystem.Data.DataSetGetDataSet(stringsql)
248{
249this.adapter=newOracleDataAdapter();
250this.ds=newDataSet();
251this.CreateCmd(sql);
252this.adapter.SelectCommand=this.cmd;
253this.adapter.Fill(this.ds);
254returnthis.ds;
255}

256
257/**////<summary>
258///获得DataSet(通过sql语句、表名)
259///</summary>
260///<paramname="sql">SQL语句</param>
261///<paramname="srcTableName">用于表映射的源表的名称</param>
262///<returns>DataSet对象</returns>

263publicSystem.Data.DataSetGetDataSet(stringsql,stringsrcTableName)
264{
265if(this.ds==null)
266{
267this.ds=newDataSet();
268}

269this.adapter=newOracleDataAdapter();
270this.CreateCmd(sql);
271this.adapter.SelectCommand=this.cmd;
272this.adapter.Fill(ds,srcTableName);
273returnthis.ds;
274}

275
276/**////<summary>
277///获得DataSet(通过sql语句、表名、已存在的DataSet)
278///</summary>
279///<paramname="sql">SQL语句</param>
280///<paramname="srcTableName">用于表映射的源表的名称</param>
281///<paramname="DataSet">已存在的DataSet对象</param>
282///<returns>DataSet对象</returns>

283publicSystem.Data.DataSetGetDataSet(stringsql,stringsrcTableName,DataSetDataSet)
284{
285this.ds=DataSet;
286returnGetDataSet(sql,srcTableName);
287}

288
289
290#endregion

291}

292}

293


最后就是调用它们了,不过这个不是本文的重点,就随便显示显示就OK了。
随便拉两个GridView控件,在它们的Page_Load事件中添加代码:(注意红色部分要和实际相符)

protectedvoidPage_Load(objectsender,EventArgse)
{
User.Data.connmyConn
=newconn();
stringsql="selectt.cnt_id,t.cnt_titlefromdat_contenttwherecnt_id=275";
System.Data.DataTabledt
=myConn.GetDataTable(sql);
GridView1.DataSource
=dt;
GridView1.DataBind();

sql
="selectt.cnt_id,t.cnt_titlefromdat_contenttwherecnt_id=282";
System.Data.DataSetds
=myConn.GetDataSet(sql);
GridView2.DataSource
=ds;
GridView2.DataBind();

myConn.CloseCon();

}

在页面cs文件中添加引用(如果你在默认页搞测试的话,那么就是Default.aspx.cs):

usingUser.Data;


基本上就OK了,Ctrl+F5就OK了。记得把两条sql语句改改~~~~`还有web.config中的连接名和连接密码要和实际的相符,否则不是连不上就是查不到东东噢~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值