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

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

 

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

asp /asp.net c#链接Orcale 数据库的方案_第1张图片

 

 

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 >
    
< 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选项卡中)
内容(不断更新):

  1 using  System;
  2 using  System.Data;
  3 using  System.Configuration;
  4 using  System.Web;
  5 using  System.Web.Security;
  6 using  System.Web.UI;
  7 using  System.Web.UI.WebControls;
  8 using  System.Web.UI.WebControls.WebParts;
  9 using  System.Web.UI.HtmlControls;
 10 using  System.Data.OracleClient;
 11
 12 namespace  User.Data
 13 {
 14    public class conn
 15    {
 16
 17        构造函数
 34
 35        私有变量
 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}

293


最后就是调用它们了,不过这个不是本文的重点,就随便显示显示就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中的连接名和连接密码要和实际的相符,否则不是连不上就是查不到东东噢~~~

你可能感兴趣的:(oracle,sql,数据库,C#,asp,dataset)