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

GoDotNet社区下的: http://www.cnblogs.com/Files/volnet/DataLayer.zip大家看这个吧

我这个当个反面教材就好了。
嗨,辛苦地写了半天~~~草草了事了~~先发上来,大家帮忙看看有啥不好噢~!多提意见会对我很有帮助滴~~~!
目的:好好地写一个类处理大部分常用的oracle数据库连接的问题。
当然,在开始还是把基本设置做齐了,省得一会连不通被人骂

首先,配置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中的连接名和连接密码要和实际的相符,否则不是连不上就是查不到东东噢~~~

conn.cs下载地址: http://www.cnblogs.com/Files/volnet/conn[Oracle].rar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值