请教JSP与ORACLE连接问题。

sky_lion 2001-05-29 07:53:00
怎样实现JSP与ORACLE连接?请详述。
...全文
401 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
handbread 2001-06-12
  • 打赏
  • 举报
回复
还是举例子比较直观
下面是我一般常用的conn.jsp

<%
Connection conn=null;
Statement stmt=null;
try{
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver() );
conn = DriverManager.getConnection("jdbc:oracle:thin:@172.18.88.48:1521:voyager","shec", "shec");
stmt = conn.createStatement();
}catch(SQLException e){
System.out.println("Error when execute a query operation :\n"
+e.getMessage()+"\n SQL error code="+e.getErrorCode());
}
%>

就这么简单

里面172.18.88.48是数据库服务器的地址
voyager是数据库的SID名称
shec/shec是用户名和密码

classes12.zip 和nls_charset12.zip这两个驱动可能还得受到JDK版本的影响

你JDK是什么版本的?
handbread 2001-06-12
  • 打赏
  • 举报
回复
不好意思这两天比较忙 没上论坛

也不知道你的问题现在什么状态

解决了么

要是还有问题 那我们再继续一起讨乱讨论
sky_lion 2001-06-05
  • 打赏
  • 举报
回复
sky_lion 2001-06-04
  • 打赏
  • 举报
回复
to:headbread
老兄帮帮忙吧?
sky_lion 2001-05-31
  • 打赏
  • 举报
回复
to:handbread
四个驱动加上去了,执行时系统提示:
no suitable driver
handbread 2001-05-31
  • 打赏
  • 举报
回复
那你可以开始用JDBC直接连了

比ODBC简单多了

关键是JDBC驱动的classpath配置问题

你看看Oracle8i目录下的JDBC目录下 应该有classes12.zip 和nls_charset12.zip
把这两个文件加到classpath里去就可以了
sky_lion 2001-05-31
  • 打赏
  • 举报
回复
to:handbread
DriverManager.getConnection("jdbc:oracle:thin:@xxx.xxx.xxx.xxx:port:SID","us
ername", "password");句中的jdbc:oracle:thin:@xxx.xxx.xxx.xxx:port:SID填什么呀?
sky_lion 2001-05-31
  • 打赏
  • 举报
回复
是数据源配置有问题,我把原来的删了,重建了一个就行了。
handbread 2001-05-31
  • 打赏
  • 举报
回复
ODBC联通了?
你那个SERVICE_NAME到底是怎么回事?

另:JDBC直接连的方法已经在第一个回复里贴出来了
你需要做的就是把Oracle8i目录下的jdbc驱动加到classpath里去
sky_lion 2001-05-31
  • 打赏
  • 举报
回复
to:handbread
多谢你的帮助,我用ODBC已经连通了现在想试一下JDBC,能帮我把上面的程序改一下吗?请注明修改行。
sky_lion 2001-05-30
  • 打赏
  • 举报
回复
to:handbread
在D:\oracle\ora81\network\ADMIN目录下只TNSNAMES,没有sqlnet.ora.
handbread 2001-05-30
  • 打赏
  • 举报
回复
你这种JDBC-ODBC的方法一点问题都没有
我在没有修改代码的前提下 建了一个Oracle的系统DNS
运行正常

所以你要确定几点:
1.系统DNS是否已经正确配置,也就是说Oracle连接服务名配置是否正确
这个可以用Oracle自带的SQL/Plus来检验
2.你对数据库操作是否正确,表名?字段名....
这个你可以通过打印错误信息来查找
将最后一段catch修改为
catch(Exception e){
out.print(e.toString());
}
就可以看到Oracle的系统报错了,根据错误编号 到Oracle技术手册里去查错误原因
byfree 2001-05-30
  • 打赏
  • 举报
回复
先写个bean,在每个页面中用<jsp:useBean id="RegisterBean" scope="page" class="db.oradb" />

package db;
import java.sql.*;

public class oradb {
String orauser="用户";
String orapasswd="密码";
String sDBDriver="oracle.jdbc.driver.OracleDriver";
String sConnStr="jdbc:oracle:thin:@192.168.0.4:1521:orcl";

private Connection conn = null;
private Statement stmt = null;
ResultSet rs = null;

public oradb() {
try {
Class.forName(sDBDriver);
conn = DriverManager.getConnection(sConnStr,orauser,orapasswd);
stmt = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println("oradb(): " + e.getMessage());
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
}
public ResultSet executeQuery(String sql) {
rs = null;
try {

rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
return rs;
}

public int executeUpdate(String sql) {
int i=0;
try{
i=stmt.executeUpdate(sql);
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
return i;
}

public void closeStmt(){
try{
stmt.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
public void closeConn(){
try{
conn.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
}

handbread 2001-05-30
  • 打赏
  • 举报
回复
你的tnsnames.ora有问题

建议看一看同目录下的sqlnet.ora
里面应该有:

NAMES.DEFAULT_DOMAIN = XXX

tnsnames.ora格式如下:

ORADB.XXX =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xx.xx.xxx)(PORT = 1521))
)
(CONNECT_DATA =
(SID = XXXX)
)
)
sky_lion 2001-05-30
  • 打赏
  • 举报
回复
to:handbread
我用network administration下的net8 assistant建了一个tnsnames.ora,内空为:# TNSNAMES.ORA Network Configuration File: D:\oracle\ora81\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

ORADB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wg)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oradb)
)
)
试了不行,把SERVICE_NAEM改为SID=oradb也不行。
sky_lion 2001-05-30
  • 打赏
  • 举报
回复
TO:HANDBREAD
我也是想先搞通ODBC再试JDBC
我用SQL/Plus 连 username/password@oradb 试了连不通
我的oracle是8.1.7版本的,为什么没找到TNSNAMES呀?
handbread 2001-05-30
  • 打赏
  • 举报
回复
我第一篇回复就是JDBC的方法
你还是先把ODBC搞通再试JDBC吧
sky_lion 2001-05-30
  • 打赏
  • 举报
回复
to:handbread
我没用过不清楚,怎么用呀?
你是怎么做的,用JDBC吗?
请多指教。
handbread 2001-05-30
  • 打赏
  • 举报
回复
既然用了JSP 为什么还死盯着ODBC不放呢

建议直接用JDBC
handbread 2001-05-30
  • 打赏
  • 举报
回复
既然用了JSP 为什么还死盯着ODBC不放呢

建议直接用JDBC
加载更多回复(7)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧