VS2015连接Oracle数据库的详细步骤
开发环境
宿主机:win10 + vs2015 + odp.net for vs2015 虚拟机:win7 + oracle 11g + 桥接
配置odp.net
首先下载 oracle developer tools for visual studio 2015 ,下载此文件需要注册oracle社区账号并接受相关的协议,此文件提供了以下组件:
oracle developer tools for visual studio 12.1.0.2.4
oracle data provider for .net 4 12.1.0.2.0
oracle providers for asp.net 4 12.1.0.2.0
下载完成后运行msi安装程序进行安装,安装完成后会自动注册vs2015的相关插件,重新启动vs2015后将会看到oracle的相关命令,比如sql *plus支持等。同时添加数据库时也能看到相应的选项。
odp.net支持所有oracle版本,因此下载时只需要注意vs的版本即可。
配置tnsnames.ora
odp.net默认使用安装目录下的tnsnames.ora,若安装目录在program files下,可能会遇到无权限等问题,此时使用管理员权限打开命令行,切换到对应目录并使用notepad编辑。
复制服务器端的tnsnames.ora文件内容,或者自己手动编辑,格式如下:
<数据源别名> = (description = (address = (protocol = tcp)(host = <主机名或ip>)(port = <端口号>)) (connect_data = (server = dedicated) (service_name = <数据库服务名>) ) )
添加数据库
打开工具-连接到数据库,数据源修改为oracle数据库下的odp.net,托管驱动程序,然后点击确定,打开添加连接窗口。
填写用户名,密码并选择数据源,然后测试连接,成功的话说明已经连通,点击确定即可。
使用虚拟机搭建数据库的额外tips 根据某网友分析,oracle的监听器在通过1521端口连接后,会开启另外一个新的随机端口进行数据通讯,因此使用nat方式虚拟网卡可能会导致连接失败。这种情况下,请使用桥接方式虚拟网卡,并在net manager中将loaclhost修改为虚拟机当前的ip。重启监听服务后,再试。
连接数据库并使用
连接数据库
dim oradb as string = "user id=system;password=123456;data source=lol" dim conn as new oracleconnection(oradb) conn.open() dim sql as string = "create table xxx" dim sqlcom as new oraclecommand sqlcom.commandtext = sql sqlcom.connection = conn sqlcom.executenonquery()
查询数据
成功配置数据源之后,只需要向界面上拖动datagridview,并进行相关配置,选择自己需要的表即可。
插入图片的正确姿势
图片作为二进制数据无法直接拼凑出sql命令,我们需要使用oraclecommand自带的parameters功能。在sql命令中用:photo来代表一个参量,然后使用
sqlcom.parameters.add("photo", oracledbtype.blob, imgdata.length)
来分别指定这个参量的类型和所占空间大小
最后使用
sqlcom.parameters(0).value = imgdata
来指定这个参量的值。
整个插入图片过程的代码如下:
dim conn as new oracleconnection(oradb) dim imgdata(0) as byte dim ms as new system.io.memorystream picturebox1.backgroundimage.save(ms, picturebox1.backgroundimage.rawformat) redim imgdata(ms.length - 1) ms.read(imgdata, 0, ms.length) ms.close() conn.open() dim sql as string = "insert into hero values" & "(" & textbox1.text & ":photo" & ")" dim sqlcom as new oraclecommand sqlcom.commandtext = sql sqlcom.connection = conn sqlcom.parameters.add("photo", oracledbtype.blob, imgdata.length) sqlcom.parameters(0).value = imgdata sqlcom.executenonquery()
常见错误
column not allowed here
数据类型不符,检查对应项目数据类型是否正确。
missing comma
命令格式不对,检查一下自己的sql命令是否有错误,特别是在有字符串的时候,需要使用""来代表一个字符串中的"。
identifier is too long
标识符过长(不得超过30字符),不是非常明白原因,不过我取消掉insert命令中指定位置的部分之后,这个错误消失了。
missing into keyword
缺少into关键字(手滑打成了inte),检查一下自己的sql命令是否有错误。
cannot insert null into (“system”.”hero”.”herocategoryid”)
这些项都指定了非0值,故不能不赋值,为对应项目赋值即可。
下面是其它网友的补充:
1.下载oracle developer tools for visual studio 2015 ,网址如下。
安装好后参照oracle的安装目录下的 tnsnames.ora文件的最后一段修改oracle developer tools for visual studio 2015安装目录下的 tnsnames.ora文件的最后一 段(直接复制)我的如下orcl =
(description =
(address = (protocol = tcp)(host = localhost)(port = 1521))
(connect_data =
(server = dedicated)
(service_name = orcl)
) f:\app\sky\product\11.2.0\dbhome_1\network\admin
3.打开vs会发现工具选项里面多了sqlplus等roacle的内容,在项目的引用上点击右键添加引用-扩展-选择oracle.managedataaccess
managedataaccess笔以前的dataaccess更好用,不用考虑64位32位的问题
4.通过如下代码测试是否连接成功
using system; using system.collections.generic; using system.linq; using system.text; using oracle.manageddataaccess.client;//dll引用 namespace test { class program { static void main(string[] args) { string connstring = "data source=orcl;user id=zzw;password=123456"; oracleconnection conn = new oracleconnection(); conn.connectionstring = connstring; conn.open(); console.writeline("connection state:" + conn.state); conn.close(); console.readline(); } } }
如果控制台输出信息为open表示连接成功
下一篇: 盖茨夫妇离婚财产分割大幕开启
推荐阅读
-
Eclipse怎么打开数据库?Eclipse连接oracle等数据库的教程
-
ThinkPHP 连接Oracle数据库的详细教程[全]
-
Oracle数据库的十种重新启动步骤
-
C#连接Oracle数据库的方法
-
C#利用ODP.net连接Oracle数据库的操作方法
-
jsp连接sql数据库的步骤(用jsp连接sql做一个登录界面)
-
myeclipse连接mysql数据库详细步骤(实战mysql数据库引擎)
-
使用数据库客户端工具Oracle SQL Developer加载第三方驱动连接mysql的方法
-
如何解决Oracle数据库中重复数据的方法步骤
-
jdbc数据库连接步骤(jdbc访问数据库的基本步骤)