[Oracle]ASP.NET+Oracle连接类conn.cs

本文详细介绍了如何在ASP.NET环境下配置Oracle数据库连接,并通过示例代码展示了如何使用Oracle客户端进行基本操作。

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

ASP.NET+Oracle连接类conn.cs

首先,配置web.config文件
添加
  <appSettings>
    <add key="SysDSN" value="Data Source=ServerName;User ID=userid;Password=password;Unicode=True"/>
  </appSettings>再者,就可以添加一个myclass文件夹,之后在其中建个类文件,默认命名空间是myClass
类文件名为conn.cs
由于VS.NET2005不默认支持oracle数据库,所以要添加其引用:在解决方案资源管理器里添加引用:System.Data.OracleClient(仔细找找噢~在.NET选项卡中)
 1using System;
  2using System.Data;
  3using System.Configuration;
  4using System.Web;
  5using System.Web.Security;
  6using System.Web.UI;
  7using System.Web.UI.WebControls;
  8using System.Web.UI.WebControls.WebParts;
  9using System.Web.UI.HtmlControls;
 10using System.Data.OracleClient;
 11
 12namespace User.Data
 13{
 14    public class conn
 15    {
 16
 17        构造函数#region 构造函数
 18        /// <summary>
 19        /// 构造函数(默认)
 20        /// </summary>
 21        public conn() { }
 22
 23        /// <summary>
 24        /// 构造函数
 25        /// </summary>
 26        /// <param name="connString">连接字符串(类型:string)</param>
 27        /// 例子:"Data Source=ServerName;User ID=userid;Password=password;Unicode=True"
 28        public conn(string connString)
 29        {
 30            this.ConnectionString = connString;
 31        }
 32
 33        #endregion
 34
 35        私有变量#region 私有变量
 36
 37        /// <summary>
 38        /// 表示针对数据库执行的SQL语句或存储过程
 39        /// </summary>
 40        private System.Data.OracleClient.OracleCommand cmd;
 41
 42        /// <summary>
 43        /// 表示一个到数据库的打开的连接
 44        /// </summary>
 45        private System.Data.OracleClient.OracleConnection con;
 46
 47        /// <summary>
 48        /// 表示要在数据库中生成的事务
 49        /// </summary>
 50        private System.Data.OracleClient.OracleTransaction tran;
 51
 52        /// <summary>
 53        /// 表示用于填充System.Data.DataSet和更新数据库的一组数据命令和到数据库的连接。
 54        /// </summary>
 55        private System.Data.OracleClient.OracleDataAdapter adapter;
 56       
 57        /// <summary>
 58        /// 提供从数据源读取数据行的只进流的方法
 59        /// </summary>
 60        private System.Data.OracleClient.OracleDataReader reader;
 61
 62        /// <summary>
 63        /// 表示内存中数据的一个表
 64        /// </summary>
 65        private System.Data.DataTable dt;
 66
 67        /// <summary>
 68        /// 表示数据在内存中的缓存
 69        /// </summary>
 70        private System.Data.DataSet ds;
 71        /// <summary>
 72        /// 连接字符串
 73        /// </summary>
 74        string ConnectionString = "";
 75
 76        /// <summary>
 77        /// 返回与打开的数据库连接
 78        /// </summary>
 79        private System.Data.OracleClient.OracleConnection openedCon
 80        {
 81            get
 82            {
 83                this.openCon(); //固定地打开数据库与之连接
 84                return this.con;
 85            }
 86            //connectiongString是由固定的,存放在Web.config文件的AppSetting节点下,因此无需set访问器
 87        }
 88        #endregion
 89
 90        私有方法#region 私有方法
 91        /// <summary>
 92        /// 打开与数据库的连接
 93        /// </summary>
 94        private void openCon()
 95        {
 96            try
 97            {
 98                if (this.con == null)
 99                {
100                    //使用using可以使该连接可以调用Dispose方法来释放资源
101                    //using (this.con = new oracleConnection())
102                    //{
103                        this.con = new oracleConnection();
104                        //设置数据库连接属性为web.config中的设置的值(默认)
105                        //或者设置为构造函数中指定的connString的值
106                        this.con.ConnectionString
107                            = (this.ConnectionString == "") ? System.Configuration.ConfigurationManager.AppSettings["SysDSN"] : this.ConnectionString;
108                        this.con.Open();
109                    //}
110                    //System.Web.HttpContext.Current.Response.Write("数据库连接成功!"); //Test
111                }
112                else if (con.State == ConnectionState.Closed)
113                {
114                    this.con.Open();
115                }
116            }
117            catch
118            {
119                System.Web.HttpContext.Current.Response.Write("数据库连接失败,请与管理员联系!");
120                System.Web.HttpContext.Current.Response.End();
121            }
122        }
123
124        /// <summary>
125        /// 获取或设置将在其中执行System.Data.OracleClient.OracleCommand的
126        /// System.Data.OracleClient.OracleTransaction。
127        /// 因为OracleConnection 不支持并行事务。所以在添加事务前必须要检查是否为空!
128        /// </summary>
129        private void checkTransaction()
130        {
131            if (this.tran != null)
132            {
133                this.cmd.Transaction = this.tran;
134            }
135        }
136
137        /// <summary>
138        /// 设置基本Command对象
139        /// </summary>
140        /// <param name="sql"></param>
141        private void CreateCmd(string sql)
142        {
143            //方法1
144            this.cmd = new oracleCommand();
145            this.checkTransaction();
146            this.cmd.Connection = this.openedCon;
147            this.cmd.CommandText = sql;
148           
149            //方法2
150            //this.checkTransaction();
151            //this.cmd=new oracleCommand(sql);
152            //this.cmd.Connection=this.openedCon;
153
154            //方法3
155            //this.checkTransaction();
156            //this.cmd = new oracleCommand(sql, this.openedCon);
157
158            //方法4
159            //this.cmd = new oracleCommand(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>
174        public void BeginTransaction()
175        {
176            this.tran = this.openedCon.BeginTransaction();
177        }
178        /// <summary>
179        /// 提交事务
180        /// </summary>
181        public void Commit()
182        {
183            this.tran.Commit();
184        }
185        /// <summary>
186        /// 回滚事务
187        /// </summary>
188        public void RollBack()
189        {
190            this.tran.Rollback();  
191        }
192
193        /// <summary>
194        /// 关闭与数据库的连接
195        /// </summary>
196        public void CloseCon()
197        {
198            if (this.openedCon != null && this.openedCon.State == ConnectionState.Open)
199            {
200                this.openedCon.Close();
201            }
202        }
203
204        /// <summary>
205        /// 执行SQL语句
206        /// </summary>
207        /// <param name="sql">SQL语句</param>
208        /// <returns>受影响的行数</returns>
209        public int DoSelectSql(string sql)
210        {
211            this.CreateCmd(sql);
212            return this.cmd.ExecuteNonQuery();
213        }
214
215        /// <summary>
216        /// 获得OracleDataReader对象
217        /// </summary>
218        /// <param name="sql">SQL语句</param>
219        /// <returns>OracleDataReader对象</returns>
220        public System.Data.OracleClient.OracleDataReader GetReader(string sql)
221        {
222            this.CreateCmd(sql);
223            this.reader=this.cmd.ExecuteReader();
224            return this.reader;
225        }
226
227        /// <summary>
228        /// 获得DataTable
229        /// </summary>
230        /// <param name="sql">SQL语句</param>
231        /// <returns>DataTable对象</returns>
232        public System.Data.DataTable GetDataTable(string sql)
233        {
234            this.adapter = new oracleDataAdapter();
235            this.dt = new DataTable();
236            this.CreateCmd(sql);
237            this.adapter.SelectCommand = this.cmd;
238            this.adapter.Fill(this.dt);
239            return this.dt;
240        }
241
242        /// <summary>
243        /// 获得DataSet(通过sql语句)
244        /// </summary>
245        /// <param name="sql">SQL语句</param>
246        /// <returns>DataSet对象</returns>
247        public System.Data.DataSet GetDataSet(string sql)
248        {
249            this.adapter = new oracleDataAdapter();
250            this.ds = new DataSet();
251            this.CreateCmd(sql);
252            this.adapter.SelectCommand = this.cmd;
253            this.adapter.Fill(this.ds);
254            return this.ds;
255        }
256
257        /// <summary>
258        /// 获得DataSet(通过sql语句、表名)
259        /// </summary>
260        /// <param name="sql">SQL语句</param>
261        /// <param name="srcTableName">用于表映射的源表的名称</param>
262        /// <returns>DataSet对象</returns>
263        public System.Data.DataSet GetDataSet(string sql,string srcTableName)
264        {
265            if (this.ds == null)
266            {
267                this.ds = new DataSet();
268            }
269            this.adapter = new oracleDataAdapter();
270            this.CreateCmd(sql);
271            this.adapter.SelectCommand = this.cmd;
272            this.adapter.Fill(ds,srcTableName);
273            return this.ds;
274        }
275
276        /// <summary>
277        /// 获得DataSet(通过sql语句、表名、已存在的DataSet)
278        /// </summary>
279        /// <param name="sql">SQL语句</param>
280        /// <param name="srcTableName">用于表映射的源表的名称</param>
281        /// <param name="DataSet">已存在的DataSet对象</param>
282        /// <returns>DataSet对象</returns>
283        public System.Data.DataSet GetDataSet(string sql, string srcTableName, DataSet DataSet)
284        {
285            this.ds = DataSet;
286            return GetDataSet(sql,srcTableName);
287        }
288
289
290        #endregion
291    }
292}
最后就是调用它们了,不过这个不是本文的重点,就随便显示显示就OK了。
随便拉两个GridView控件,在它们的Page_Load事件中添加代码:(注意红色部分要和实际相符)
 protected void Page_Load(object sender, EventArgs e)
        {
            User.Data.conn myConn = new conn();
            string sql = "select t.cnt_id,t.cnt_title from dat_content t where cnt_id=275";
            System.Data.DataTable dt = myConn.GetDataTable(sql);
            GridView1.DataSource = dt;
            GridView1.DataBind();

            sql = "select t.cnt_id,t.cnt_title from dat_content t where cnt_id=282";
            System.Data.DataSet ds = myConn.GetDataSet(sql);
            GridView2.DataSource = ds;
            GridView2.DataBind();

            myConn.CloseCon();

        }在页面cs文件中添加引用(如果你在默认页搞测试的话,那么就是Default.aspx.cs):
using User.Data;
基本上就OK了,Ctrl+F5就OK了。记得把两条sql语句改改~~~~`还有web.config中的连接名和连接密码要和实际的相符,否则不是连不上就是查不到东东噢~~~


详细资料来源于:
http://tech.it168.com/KnowledgeBase/Articles/9/8/c/98c648d5d39d30e420c381b82b857586.htm


文章来自: 本站原创
引用通告地址: http://www.w-sqq.com/trackback.asp?tbID=280

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值