win8下在microsoft visual studio 2012利用ODP.NET连接ORACLE 12c
老板要求我搭个ASP.NET框架,并且连接上ORACLE数据库,听起来好像挺简单的,但就是连第一步连接ORACLE我都搞了两天╮(╯▽╰)╭
首先,项目书上要求用ORACLE 10G,可我自己的本本装的WIN8,尝试地装了下ORACLE 10G失败,而且界面丑的一笔,于是放弃治疗了。
上ORACLE官网看了下,现在都出到ORACLE 12c了,果断来了一发,照着网上的安装教程磕磕巴巴终于装上了。教程如下地址:
这里,我设置的全局数据库名是orcl,密码为Oracle12c(好像ORACLE的密码必须要有大小写配合)。
安装完毕之后,用自带的SQL Plus登录进去,用户名为SYSTEM,密码为Oracle12c,ORACLE比较操蛋啊,之前在MYSQL的语句都不好用了。
总结几条:
// 查询所有表(分号一定要有)
select table_name from all_tables; // 查询用户下的所有表
select table_name from user_tables; // 显示表内数据
select * from myoracle;

有点兴奋,可是好戏在后头 .. 我一直在寻找PLSQL Developer,找了半天咋没有呢 .. 在东软电脑上都有啊,百度了一下原来他妈的这玩意还要自己装。
ORACLE官网上木有这玩意,我在其他地方下了一个,装上,发现不好使,他妈的,郁闷了,这时候不懂怎么办了。
各种百度啊,并且在visual studio12里写代码测试能不能连上,虽然百度上方法很多,可是没一个能好用的,真是纠结出翔。
偶然我怀疑是不是有组件没装,又是各种百度,居然真是!我还没装ORACLE客户端!真笨啊!搞了半天才发现这么傻的问题!
我的ORACLE是12c release 12.1.0.1.0的,所以下了ODTwithODAC121010包,里面包括:

虽然找到了原因,但这时候我又担心不会把这些组件都装上以后又有什么新问题吧,果然不出我所料!妈瞎啊妈瞎真是fuck啊!
各种试,试了PLSQL Developer不行,试了visual studio12里的ODBC,OLE DB,ODP.NET托管驱动程序还是不行!
ORA-12154: TNS: 无法解析指定的连接标识符
然后我又是各种百度啊!各种试各种不成功!到最后,终于有一个好用的了!那就是:
在D:\MySoftware\app\gomez\product\12.1.0\dbhome_1\NETWORK\ADMIN\ listener.ora里加上一些配置。
本来是这样的:
# listener.ora Network Configuration File: D:\MySoftware\app\gomez\product\12.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools. SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\MySoftware\app\gomez\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\MySoftware\app\gomez\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = WMW-PC)(PORT = 1521))
)
)
修改后是这样的:
# listener.ora Network Configuration File: D:\MySoftware\app\gomez\product\12.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools. SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_HOME = orcl)
(ORACLE_HOME = D:\MySoftware\app\gomez\product\12.1.0\dbhome_1)
(SID_NAME = ORCL)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\MySoftware\app\gomez\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\MySoftware\app\gomez\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = WMW-PC)(PORT = 1521))
)
)
-------------------------------------------------
还有就是本来在装完客户端之后,D:\MySoftware\app\gomez\product\12.1.0\client_1\Network\Admin这个路径下只有Sample文件夹,
参照D:\MySoftware\app\gomez\product\12.1.0\dbhome_1\NETWORK\ADMIN,这里不仅有Sample文件夹,还有listener.ora,tnsnames.ora,sqlnet.ora还有sqlnet13122912下午2119.bak(本来想用xxx等 .. 感觉程序员还是不要那么马虎),
所以我就把D:\MySoftware\app\gomez\product\12.1.0\client_1\Network\Admin\Sample里的sqlnet.ora和tnsnames.ora都拷出来,不知道有没有用(*^__^*)
-------------------------------------------------
然后重启服务OracleOraDB12Home1TNSListener,再试一试PLSQL,我擦进去了!


吊炸天了,赶紧试一试ODP.NET,也可以了!

然后接下来就是怎么用语句来实现对ORACLE数据库的查看、存储等等操作了。
先在ODTwithODAC121010里找到Oracle.DataAccess.Client.dll,具体位置是ODTwithODAC121010\stage\Components\oracle.ntoledb.odp_net_2\12.1.0.1.0\1\DataFiles里的filegroup10.jar,解压可得到Oracle.DataAccess.Client.dll,再将其添加到本项目的引用中来,然后在代码里添加using。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Odbc;
using Oracle.DataAccess.Client; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 连接数据库
string conn = "DATA SOURCE=ORCL;PERSIST SECURITY INFO=True;USER ID=SYSTEM;Password=Oracle12c";
OracleConnection odpCon = new OracleConnection(conn);
odpCon.Open(); // 插入数据
string sqlinsert = "insert into myoracle values(6,'yh')";
using (OracleCommand comm_insert = new OracleCommand(sqlinsert, odpCon))
{
using (OracleDataReader rdr_insert = comm_insert.ExecuteReader())
{ }
} // 查询数据
string sqlselect = "select * from myoracle";
using (OracleCommand comm = new OracleCommand(sqlselect, odpCon))
{
using (OracleDataReader rdr = comm.ExecuteReader())
{
while (rdr.Read())
{
Console.Write("ID ");
Console.Write(rdr.GetString());
Console.Write(", NAME: ");
Console.WriteLine(rdr.GetString());
}
}
}
}
}
}
代码很简单,不想解释了,跑起来是酱紫的。

好,到此为止,我已经可以在win8操作系统下用ODP.NET在visual studio 2012里利用代码连接到ORACLE 12C做一些必要操作了。
-------------------------------------------------
还有问题么?有的!ODBC,OLE DB等等还是不行!
ODBC数据源配置还是不好搞,搞来搞去还是错的!

非常不理想啊!说是体系结构不匹配,我的操作系统是64位的,数据库也是64位的,客户端没说是多少位的,ODBC数据源32和64的都设置过都不行。
还有OLE DB也还是不行,据visual studio 2012提示说可供连接到的最高版本为10g,那还玩个毛线!

还有一种!好像visual studio 2012的“引用”里面都没有这个库了 %>_<%

╮(╯▽╰)╭哎,ODBC & OLE DB & Oracle Client 这3种方法我暂时就放弃治疗了 .. 等过几天可能要在其他电脑搭XP+Oracle 10g什么的时候 ..
那个时候应该绕不过去这个了,那时候有进展再来详述,今天总算不是没有收获了!接来下加油继续搞下去!
win8下在microsoft visual studio 2012利用ODP.NET连接ORACLE 12c的更多相关文章
- 【解决】Microsoft Visual Studio 2012 打开2008下编译的silverlight3项目
最近因为项目需要,老师要我搞一发流程设计器,毫无头绪呀妈蛋 .. 我考虑是用silverlight呢还是jquery .. 上网找了找 .. 有一个用silverlight3写的 貌似IDE用的是V ...
- Microsoft Visual Studio 2012 文档 下载地址 vs2012 中文帮助文档
https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=34794 下载地址: http://download.microsoft. ...
- Microsoft Visual Studio 2012正式版官方下载
Microsoft Visual Studio 2012正式版官方下载 首先声明,看到园子里还没有类似的新闻,所以斗胆发首页,如有不妥之处,请移除并谅解. 虽然之前已经又用到泄露的MSDN正式版,但今 ...
- Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版
Microsoft Visual Studio 2012 Ultimate旗舰版(VS2012中文版下载)是一个最先进的开发解决方案,它使各种规模的团队能够设计和创建出使用户欣喜的引人注目的应用程序. ...
- Microsoft Visual Studio 2012 添加实体数据模型
Microsoft Visual Studio 2012 添加实体数据模型 1.创建一个web项目 2.添加ADO实体数据模型,如下图: 3.选择 从数据库生成,然后下一步 4.新建连接,如下图: ...
- Microsoft Visual Studio 2012 Update 4 RC 3 离线安装程序
Microsoft Visual Studio 2012 Update 4 RC 3 离线安装程序 ☆ 微软官网地址:☆ http://www.microsoft.com/en-us/download ...
- Windows7下Blend for Visual Studio 2012使用问题
目前开发的系统里很多控件样式和动画比较复杂,应该是之前同事用Blend做的,这种神器不用太浪费了,自己也准备试试. 系统环境Windows7+Visual Studio 2012 1.Windows7 ...
- Microsoft Visual Studio 2012注册密钥
Microsoft Visual Studio Ultimate 2012 旗舰版 有效注册密钥:YKCW6-BPFPF-BT8C9-7DCTH-QXGWCMicrosoft Visual Studi ...
- 解决方案-Microsoft Visual Studio 2012 已停止工作
问题: 根本解决方案: 用管理员模式运行. 找到软件的安装目录 \Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe 然后如何保存管理员权限运行呢? ...
随机推荐
- centOS 6.4 mysql安装
1 直接安装 yum install mysql mysql-server 2 启动mysql /usr/bin/mysqld_safe --user=mysql & 启动时,如果出现Can' ...
- 如何在WCF中集成unity
第一种是代码方式: 点击打开链接http://blogs.microsoft.co.il/gadib/2010/11/30/wcf-and-unity-20/ 还有一种方式可以扩展成配置文件,有时间再 ...
- 【自用代码】Json转对象
private static object JsonToObject(string jsonString, object obj) { var serializer = new DataContrac ...
- 使用WebBrowser的记录
第一:新建一个类,用了获取WebBrowser元素的类 //需要引用 Interop.SHDocVw 和 Microsoft.mshtmlpublic class Element { //根据Name ...
- 设置Android程序的默认安装位置
修改 AndroidManifest.xml 文件: <manifest xmlns:android="http://schemas.android.com/apk/res/andro ...
- Boost1.62+win7+VC2015编译
下载 通过boost官方网站, 或直接在source forge下载boost_1_62_0. 可选包 Zlib library, 环境变量: ZLIB_SOURCE bzip2, 环境变量: BZI ...
- 【技巧】DataGridView,ListView重新绑定时保持上次滚动位置
(1)DataGridView 今天在项目时遇到一个问题,将DataTable绑定到DataGridView,其中一列为CheckBox列,当我修改该列值时,触发CellValueChanged事件. ...
- hdu-A+B问题,大数加法
格式问题很头疼啊 Input The first line of the input contains an integer T(1<=T<=20) which means the num ...
- 有两个数组a,b,大小都为n;通过交换a,b中的元素,使sum(a)-sum(b)最小。
今天在浏览网页的时候,发现了一个叫做 华为面试题(8分钟写出代码) 的链接,不确定真实性,纯属好奇,就点进去看看 这个可能是很老的题目吧,因为我看到这题目时,底下有好多评论了.提到XX排序,内存占用 ...
- STM32系统时钟
一.时钟树 STM32有4个时钟源: 1)HSE(高速外部时钟源) 外部晶振作为时钟源,范围为4~16MHz,常取为8MHz 2)HSI(高速内部时钟源) 由内部RC振荡器产生,频率为8MHz,但不稳 ...