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/98c648d5d39d30e420c381b8 2b857586.htm
文章来自: 本站原创 引用通告地址: http://www.w-sqq.com/trackback.asp?tbID= 280