宿主机:Win10 + VS2015 + ODPNet for VS2015虚拟机:Win7 + Oracle 11g + 桥接
配置ODPNet
首先下载 Oracle Developer Tools for Visual Studio 2015 ,下载此文件需要注册Oracle社区账号并接受相关的协议,此文件提供了以下组件:
Oracle Developer Tools for Visual Studio 121024
Oracle Data Provider for NET 4 121020
Oracle Providers for ASPNET 4 121020
下载完成后运行MSI安装程序进行安装,安装完成后会自动注册VS2015的相关插件,重新启动VS2015后将会看到Oracle的相关命令,比如SQL PLUS支持等。同时添加数据库时也能看到相应的选项。
ODPNet支持所有Oracle版本,因此下载时只需要注意VS的版本即可。
配置tnsnamesora
ODPNet默认使用安装目录下的 tnsnamesora ,若安装目录在Program Files下,可能会遇到无权限等问题,此时使用管理员权限打开命令行,切换到对应目录并使用notepad编辑。
复制服务器端的tnsnamesora文件内容,或者自己手动编辑,格式如下:
<数据源别名> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <主机名或IP>)(PORT = <端口号>))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <数据库服务名>)
)
)
添加数据库
打开 工具 - 连接到数据库 ,数据源修改为 Oracle数据库 下的 ODPNET,托管驱动程序 ,然后点击 确定 ,打开 添加连接 窗口。
填写用户名,密码并选择数据源,然后测试连接,成功的话说明已经连通,点击确定即可。
使用虚拟机搭建数据库的额外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)
connOpen()
Dim sql As String = "create table xxx"
Dim sqlCom As New OracleCommand
sqlComCommandText = sql
sqlComConnection = conn
sqlComExecuteNonQuery()
查询数据
成功配置数据源之后,只需要向界面上拖动 DataGridView ,并进行相关配置,选择自己需要的表即可。
插入的正确姿势
作为二进制数据无法直接拼凑出SQL命令,我们需要使用 OracleCommand 自带的 Parameters 功能。在SQL命令中用 :photo 来代表一个参量,然后使用
sqlComParametersAdd("photo", OracleDbTypeBlob, imgDataLength)
来分别指定这个参量的类型和所占空间大小
最后使用
sqlComParameters(0)Value = imgData
来指定这个参量的值。
整个插入过程的代码如下:
Dim conn As New OracleConnection(oradb)
Dim imgData(0) As Byte
Dim ms As New SystemIOMemoryStream
PictureBox1BackgroundImageSave(ms, PictureBox1BackgroundImageRawFormat)
ReDim imgData(msLength - 1)
msRead(imgData, 0, msLength)
msClose()
connOpen()
Dim sql As String = "insert into hero values" & "(" & TextBox1Text & ":photo" & ")"
Dim sqlCom As New OracleCommand
sqlComCommandText = sql
sqlComConnection = conn
sqlComParametersAdd("photo", OracleDbTypeBlob, imgDataLength)
sqlComParameters(0)Value = imgData
sqlComExecuteNonQuery()
常见错误
column not allowed here
数据类型不符,检查对应项目数据类型是否正确。
missing comma
命令格式不对,检查一下自己的SQL命令是否有错误,特别是在有字符串的时候,需要使用 "" 来代表一个字符串中的 " 。
identifier is too long
标识符过长(不得超过30字符),不是非常明白原因,不过我取消掉insert命令中指定位置的部分之后,这个错误消失了。
missing INTO keyword
缺少into关键字(手滑打成了inte),检查一下自己的SQL命令是否有错误。
ClassforName(commicrosoftjdbcsqlserverSQLServerDriver) JDBC本地驱动方式
ClassforName(sunjdbcodbcjdbcodbcdriver) JDBC-ODBC桥接方式
[size=xx-large][size=x-large]1JDBC有几种驱动类型:
type 1:jdbc-odbc桥
type 2:本地api驱动
type 3:网络协议驱动
type 4:本地协议驱动
Type 1: jdbc-odbc桥
Jdbc-odbc桥是sun公司提供的,是jdk提供的的标准api 这种类型的驱动实际是把所有jdbc的调用传递给odbc ,再由odbc调用本地数据库驱动代码( 本地数据库驱动代码是指由数据库厂商提供的数据库 *** 作二进制代码库,例如在oracle for Windows中就是oci dll 文件)
jdbc-odbc桥 ---- odbc---- 厂商DB代码 ----- 数据库Server
(图一)
只要本地机装有相关的odbc驱动那么采用jdbc-odbc桥几乎可以访问所有的数据库,jdbc-odbc方法对于客户端已经具备odbc driver的应用还是可行的但是,由于jdbc-odbc先调用odbc再由odbc去调用本地数据库接口访问数据库所以,执行效率比较低,对于那些大数据量存取的应用是不适合的而且,这种方法要求客户端必须安装odbc 驱动,所以对于基于internet ,intranet的应用也是不合适的因为,你不可能要求所有客户都能找到odbc driver
Type 2: 本地Api驱动
本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库这种方法需要本地数据库驱动代码
本地api驱动----厂商DB代码-----数据库Server
(图二)
这种驱动比起jdbc-odbc桥执行效率大大提高了但是,它仍然需要在客户端加载数据库厂商提供的代码库这样就不适合基于internet的应用并且,他的执行效率比起3,4型的jdbc驱动还是不够高
Type3:网络协议驱动
这种驱动实际上是根据我们熟悉的三层结构建立的 jdbc先把对数局库的访问请求传递给网络上的中间件服务器 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器如果中间件服务器也是用java开发的,那么在在中间层也可以使用1,2型 jdbc驱动程序作为访问数据库的方法
网络协议驱动---------中间件服务器------------数据库Server
( 图三)
由于这种驱动是基于server的所以,它不需要在客户端加载数据库厂商提供的代码库而且他在执行效率和可升级性方面是比较好的因为大部分功能实现都在server端,所以这种驱动可以设计的很小,可以非常快速的加载到内存中 但是,这种驱动在中间件层仍然需要有配置其它数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好
Type4 本地协议驱动
这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求由于4型驱动写的应用可以直接和数据库服务器通讯这种类型的驱动完全由java实现,因此实现了平台独立性
本地协议驱动---------数据库Server
( 图四)
由于这种驱动不需要先把jdbc的调用传给odbc或本地数据库接口或者是中间层服务器所以它的执行效率是非常高的而且,它根本不需要在客户端或服务器端装载任何的软件或驱动 这种驱动程序可以动态的被下载但是对于不同的数据库需要下载不同的驱动程序
以上对四种类型的jdbc驱动做了一个说明那么它们适合那种类型的应用开发呢Jdbc-odbc桥由于它的执行效率不高,更适合做为开发应用时的一种过度方案,或着对于初学者了解jdbc编程也较适用 对于那些需要大数据量 *** 作的应用程序则应该考虑2,3,4型驱动在intranet方面的应用可以考虑2型驱动,但是由于3,4型驱动在执行效率上比2型驱动有着明显的优势,而且目前开发的趋势是使用纯java所以3,4型驱动也可以作为考虑对象 至于基于internet方面的应用就只有考虑3,4型驱动了 因为3型驱动可以把多种数据库驱动都配置在中间层服务器所以3型驱动最适合那种需要同时连接多个不同种类的数据库, 并且对并发连接要求高的应用 4型驱动则适合那些连接单一数据库的工作组应用
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
1。我用JBuilder2006,下载的。
2。装了jdk150
3。odbc配置了,能选择 我要的数据库,测试成功。
4。运行时出现:javangClassNotFoundException:sunjdbcJdbcOdbcDriver
javangSQLException:No suitable driver
5。原程序如下:
import javasql;
class Jdbctest {
public Jdbctest() {
}
public static void main(String[] args) {
try
{
ClassforName("sunjdbcJdbcOdbcDriver");
}catch(ClassNotFoundException ce)
{
Systemoutprintln(ce);
}
try
{
Connection con=DriverManagergetConnection("jdbc:odbc:test");
Statement s=concreateStatement();
ResultSet rs=sexecuteQuery("select from friends");
while(rsnext())
{
Systemoutprint(rsgetString(1)+"\t");
Systemoutprint(rsgetString(2)+"\t");
Systemoutprint(rsgetString(3)+"\t");
Systemoutprint(rsgetString(4)+"\t");
Systemoutprintln();
}
rsclose();
sclose();
conclose();
}catch(SQLException ce)
{
Systemoutprintln(ce);
}
}
}
@@@@@@@@@@@那位大虾看看,可能是什么问题,很急啊,帮帮忙嘛,我都配一天了,一点头绪都没有。谢谢。
解析:
没有驱动所以连接不上
首先到微软的网站下载jdbc for sqlserver的driver
地址是: Microsoft SQL Server 2000 Driver for JDBC
(microsoft/downloads/releasereleaseid=38312)
然后下载安装到要安装的目录中,假设安装目录为d:\java\forsql
安装后要在classpath中添加d:\java\forsql\lib\m asejar;d:\java\forsql\lib\mssqlserverjar;d:\java\forsql\lib\msutiljar
然后可以进行一个简单的实验
首先注册驱动器,使用sqlserver jdbc驱动的别名:microsoftjdbcsqlserverSQLServerDriver
程序为
ClassforName("microsoftjdbcsqlserverSQLServerDriver");
然后要设置连接
String url="jdbc:microsoft:sqlserveryourserver:port;DatabaseName=yourdatabase"
Connection conn= DriverManagergetConnection(url,"uername","password");
实验一下,成功了吧!
路由器桥接教程详细如下:
工具:路由器、网线。
1、把新买的路由器连上电脑,把路由器的LAN口(1.2.3.4)随便一个连接电脑。
2、进入路由器设置,输入路由器进去密码。
3、不用设置,直接跳过向导。
4、选择路由设置。
5、选择LAN设置,LAN口设置IP:换成手动把原来的192.168.1.1改成192.168.1.2(2-255都行),然后点保存,点击确定。
6、在地址栏重新输入192.168.1.2(和你设置的IP一样),设置IP是为了不和主路由器IP冲突,输入密码进入路由器。
7、进入路由器以后,选择路由设置。
8、选择DHCP服务器,选择关,点击保存。
9、来设置这个路由器的WiFi名称和密码,选择无线设置,输入名称和密码,点击保存。
10、重启路由器,新路由器的桥接就设置完了。
11、把家里主路由器的LAN口和副路由器的LAN口有那跟长网线连上就可以了,这个被桥接的路由器就可以上网了,如果桥接成功电脑的的网络图标会显示已连接。
无线桥接可通过WDS实现,前提是路由器支持此项功能,部分不支持;
使用工具:华硕路由器 X 2、个人电脑1台
详细步骤如下:
首先,在可以正常上网的路由器A上做设定:
1访问路由器A的管理页面,依次打开无线网络----WDS。
2记录下路由器A的MAC地址,需要填写在路由器B中。
3选择需要进行WDS的频段,与路由器B相同。
4 选择AP模式,各个模式解释如下:
5 在远程基地台列表中,选择或输入路由器B 5G频段的MAC地址,并点击添加。然后,启用“连接列表中的访问点”,并应用本页面设置。
6在上方标签栏选择“一般设置”。在“一般设置”下选择对应频段(24G或者5G),并固定频道带宽和频道。
现在,在需要进行WDS设置的路由器B(图中为RT-AC68U)上做设定:
访问路由器B的管理页面,依次打开无线网络----WDS。
2 记录下路由器B的MAC地址,需要填写在路由器A中。同时选择与路由器A相同的频段(5Ghz)
3 在远程基地台列表中添加路由器A的MAC地址,并打开连接列表中的访问点。
4 上方标签栏中选择“一般设置”。在“一般设置”下选择对应频段(24G或者5G),并固定频道带宽和频道与路由器A相同。
5 依次选择内部网络---内网地址设置。
6 设置路由器B的内网地址,保证与路由器A不同。(防止IP地址冲突,同时在完成WDS设定后,需要通过此地址的网段才能再次访问到路由器B)
7 在上方标签栏中,选择DHCP服务器。并关闭DHCP服务器。
设定完成。
以上就是关于visual怎么连接oracle数据库全部的内容,包括:visual怎么连接oracle数据库、sun.jdbc.odbc.jdbcodbcdriver属于JDBC中的那种类型、jdbc-odbc桥接器怎样连接SQL server2000等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)