.Net连接Oracle数据库
因为公司前段时间有个项目需要用到oracel数据库,不巧的是,我只玩过SQL SERVICE,而且客户得数据库还不对外开放,下面说说步骤吧
1、数据库连接还是和oracel大同小异的,我是在Web.config中配置的数据库连接
<add name="OracleConnectionstring" connectionString="Data Source=数据库; Persist Security Info=True;User ID=用户名;Password=密码;Unicode=true" providerName="System.Data.OracleClient"/>
2、这是我在网上下的一个Oracel的帮助文档,还算能满足的我的需求
/// <summary> /// 数据库帮助工具 /// </summary> public class OracleHelper { //数据库的链接字符串,取自Web.config文件(sql) //private static string connString = ConfigurationManager.ConnectionStrings["AdministrativeLaw"].ConnectionString; private static string connString = null; private static SqlConnection conn = null; //数据库的链接字符串,取自Web.config文件(access) //private static string connStringAccess = ConfigurationManager.ConnectionStrings["access_con"].ConnectionString //+ HttpContext.Current.Server.MapPath(ConfigurationManager.ConnectionStrings["access_path"].ConnectionString); private static string connStringAccess = null; private static OleDbConnection connAccess = null; //数据库的链接字符串,取自Web.config文件(oracle) private static string connStringOracle = ConfigurationManager.ConnectionStrings["OracleConnectionstring"].ConnectionString; private static OracleConnection connOracle = null; //返回结果集(查询结果) private static OracleDataReader resultOracle = null; //oracle //返回(增删改)的更新行数 private static int count = 0; #region OpenConn /// <summary> /// 打开connection /// </summary> private static void OpenConn(string whichMethod) { switch (whichMethod) { case "sql": conn = new SqlConnection(connString); conn.Open(); break; case "access": connAccess = new OleDbConnection(connStringAccess); connAccess.Open(); break; case "oracle": connOracle = new OracleConnection(connStringOracle); connOracle.Open(); break; }; } #endregion #region oracle dbhelper #region oracle查询 /// <summary> /// 查询方法 /// </summary> /// <param name="sqlName">要执行的存储过程的名称或者oracle语句</param> /// <param name="para">要执行的存储过程的参数数组,执行oracle时用不到</param> /// <param name="whichMethod">使用的查询方法(存储过程StoredProcedure\oracle语句Text)</param> /// <returns>得到的结果集</returns> public static DataTable Select(string oracle, OracleParameter[] para, CommandType cmdType) { try { OpenConn("oracle"); using (OracleCommand com = new OracleCommand(oracle, connOracle)) { com.CommandType = cmdType; if (para.Length != 0) com.Parameters.AddRange(para); resultOracle = com.ExecuteReader();//返回数据集 }; } catch (SqlException e2) { throw new Exception(e2.Message, e2); } DataTable dt = DAL.Common.EntityTansformation.ConvertDataReaderToDataTable(resultOracle); return dt; } #endregion #region oracle增删改 /// <summary> /// 增删改方法 /// </summary> /// <param name="sqlName">要执行的存储过程的名称或者oracle语句</param> /// <param name="para">要执行的存储过程的参数数组,执行oracle语句时用不到</param> /// <param name="whichMethod">使用的更新方法(存储过程StoredProcedure\oracle语句Text)</param> /// <returns>更新得到的行数</returns> public static int UpDeInstu(string oracle, OracleParameter[] para, CommandType cmdType) { try { OpenConn("oracle"); using (OracleCommand com = new OracleCommand(oracle, connOracle)) { com.CommandType = cmdType; if (para.Length != 0) com.Parameters.AddRange(para); count = com.ExecuteNonQuery();//返回受影响的行数 }; } catch (SqlException e2) { count = 0; throw new Exception(e2.Message, e2); } return count; } #endregion #endregion #region 关闭连接 /// <summary> /// 最后需要调用的关闭函数,关闭与数据库的链接 /// </summary> public static void close() { #region oracle if (resultOracle != null) resultOracle.Close(); if (connOracle != null) connOracle.Close(); #endregion } #endregion }
3、因为我调的客户提供的存储过程,Oracel的存储过程和我们SQLservice的有点区别,他需要标明传入参数,和传出参数(游标)
注意:在这期间遇到有几个问题,一个是版本问题,我们原本的框架是32位的IIS,而我装的是Oracel 64位的,所以一直连不上,后来没办法,只能重新搭建框架
还有就是如果连的不是本地数据库,需要在这个目录下配置远程连接
其他的问题就是安装数据库、添加监听之类的问题了,有需要的话我下一篇再和大家说

浙公网安备 33010602011771号