vs2022如何连接oracle

vs2022如何连接oracle,第1张

vs2022如何连接oracle的解决方法如下:

本机环境:64位win7,安装了64位的oracle桌面类

服务器环境:64位windows server 2008,64位oracle服务器端

问题:本机用sql developer连数据库没有问题,winform程序连接也没有问题,但是web程序连接oracle失败,报错:“尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。“

解决过程:在网上查找原因,说是因为VS的webDe.webServer.exe 是一个32位的进程,所以连不上64位数据库,解决方法提了很多,包括把项目的属性里的生成选项里的目标平台:改为x86,web项里的服务器改成iis不使用vs自带的web deleloper ment 服务,修改path环境变量等,但是都没管用。

最终的解决办法:安装32位oracle客户端(win32_11gR2_client.zip),但是这样一来winform程序又连不上数据库了,得把winform程序的项目属性里生成选项的目标平台改成x86,这样就都行了。

思维导图:

一、 页面跳转方式

HTML超链接的方式

javascript方式跳转

window.location.href = "跳转的地址"

java方式跳转

转发

概述

由服务器端进行的页面跳转

方法

(1)获取转发器====》RequestDispatcher rd = request.getRequestDispatcher("/跳转的地址")

(2)实现转发====》转发器对象.forward(request,response)

通常简写:request.getRequestDispatcher("/跳转的地址").forward(request,response)

特点

(1)地址栏不发生变化,显示的是上一个页面的地址

(2)请求次数:只有1次请求,因为转发是服务端行为。

(3)根目录:http://localhost:8080/项目地址/,包含了项目的访问地址

(4)请求域中数据不会丢失

重定向

概述

由浏览器端进行的页面跳转

方法

response.sendRedirect("要跳转的地址")

特点

(1)地址栏:显示新的地址

(2)请求次数:2次

(3)根目录:http://localhost:8080/ 没有项目的名字

(4)请求域中的数据会丢失,因为是2次请求

注意事项

什么时候使用转发,什么时候使用重定向

如果要保留请求域中的数据,使用转发,否则使用重定向。

以后访问数据库,增删改使用重定向,查询使用转发。

转发或重定向后续的代码是否还会运行?

无论转发或重定向后续的代码都会执行

重定向和转发的区别

二、 JDBC API

主要功能

与数据库建立连接、执行SQL 语句、处理结果

常用对象

DriverManager

依据数据库的不同,管理JDBC驱动

Connection

负责连接数据库并担任传送数据的任务

PreparedStatement

由 Connection 产生、负责执行SQL语句

ResultSet

负责保存Statement执行后所产生的查询结果

java通过jdbc连接Oracle数据库进行交互的步骤

1、加载JDBC驱动

Class.forName(JDBC驱动类)

2、与数据库建立连接

Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","admin")

3、发送SQL语句,并得到返回结果

4、处理返回结果

5、释放资源

1.response对象

【服务器端回应客户端的请求】

response对象包含响应客户请求的有关信息,但是jsp中很少直接用到它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。

3.请求转发与请求重定向

请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变。

请求转发:服务器行为,request.getRequestDispatcher().forward(request,response)是一次请求,转发后请求会保存,地址栏的URL地址不会改变

【生活例子】假设老王去办理某个护照

【重定向】老王先去了A局,A局的人说:“这个事不归我们管,去B局”,然后,你就从A局退了出来,自己乘车去了B局。

【转发】:你去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B局的人,让他们办好后送了过来。

【案例演示】

regester.jsp(注册界面--用户名和爱好-提交到response.jsp)、response.jsp、request.jsp(接收用户名和爱好)3个页面。

1.在response.jsp页面实现请求重定向:response.sendRedirect(request.jsp)

在request.jsp页面接收用户名和爱好,如果能接收说明前置请求的对象被保存,如果没有,说明是一次新的请求。

【结果】用户名和爱好都是null,地址栏改变了,跳转了request.jsp。(regester.jsp本身是提交给response.jsp去处理的,但是response对象做了一个请求重定向,相当于让客户端发了一个新的请求,然后请求到了request.jsp页面),由于是一次新的请求,上一次的请求无法被保存。

2.在response.jsp页面实现请求转发:

request.getRequestDispatcher("request.jsp").forward(request,response)

【结果】能传递参数,地址栏不会发生改变。

4.javaweb连接Oracle数据库

//javaweb项目连接Oracle数据库步骤如下

//预备步骤

//1.打开Oracle新建数据表,并向表中添加一条数据

//2.将Oracle架包导入项目中---放入lib文件夹中

//3.将架包导入工程;鼠标移到该包上右键-->build path-->add to build path

//使用步骤

//1.注册驱动类

Class.forName("oracle.jdbc.driver.OracleDriver")

//2.连接数据库

String url = "jdbc:oracle:thin:@localhost:1521:orcl"

Connection conn = DriverManager.getConnection(url, "scott", "123")

//3.执行sql语句

String sql = "select * from tb_user where uname = ? and upwd = ?"

//4. *** 作数据

PreparedStatement ps = conn.prepareStatement(sql)

//给占位符设置值

ps.setString(1, username)

ps.setString(2,password)

//返回结果集

ResultSet rs = ps.executeQuery()

//判断结果集

if(rs.next()){//如果有下一个值

//转发---

//out.print("<script>alert('登录成功')</script>")

request.getRequestDispatcher("index.jsp").forward(request, response)

}else{

//重定向---新的请求方式

//out.print("<script>alert('登录失败')</script>")

response.sendRedirect("login.jsp")

}

//5.关闭连接

rs.close()

ps.close()

conn.close()

jdbc连接数据库的步骤:

准备阶段:

1.编写sql数据表

2.导入指定的架包

步骤如下:

1.加载驱动 ClassName

2.创建连接

String url = "jdbc:sqlserver://localhost:1433DatabaseName=stu"

Connection conn = DriverManager.getConnection("url","sa","123")

3.创建执行对象

String sql = "select * from student"

prepareStatement ps = conn.prepareStatement(sql)

4.返回一个查询的结果集对象

ResultSet rs = ps.executeQuery()

首先静态的html标签是无法直接调用java程序连接数据库的。

下面是实现的几种方法:

第一种方法:

将按钮放到form表单中,当按钮点击时提交表单(或者直接将input的type属性定义成submit),表单可以指向JSP或Servlet,在JSP或Servlet里调用java程序

第二种方法:

在按钮的onclick时间中添加js代码

self.location="url"其中url指向JSP或Servlet

第三种方法:

使用第三方的javascript包,dwr是一个不错的选择:

1、需要准备dwr的jar包,并将之放到lib目录下;

2、修改web.xml文件,添加DWRServlet的映射;

3、配置dwr,即在WEB-INF目录下,添加dwr.xml文件,让dwr知道在运行时给哪些JavaBean生成相应的javascript库;

4、将需要的脚本库引入到html页面中就可以通过dwr的API访问java类了。

第四种方法:

使用MVC框架更简单,以struts为例,可以仿照第一或第二种方法,将url替换成配置文件中配置的地址就能访问java程序了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9957365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存