救命??关于用JDBC连接Oracle数据库(在线等待...)

Meathead 2002-12-18 02:53:23
我正在用WSAD开发一个EJB模块. 测试连接服务器的Oracle数据库. 发现驱动程序注册不对.
String sDBDriver = "oracle.jdbc.driver.OracleDriver"
String jndiName = "jdbc:oracle:thin:@IP:reguser";
我找到了. oracle中JDBC的支持库. classes111.jar和classes12.jar不知道是不是这两个库.
连接过程中会出现异常.类找不到.

...全文
90 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveDelphiBox 2002-12-18
  • 打赏
  • 举报
回复
goto http://www.chinajavaworld.net/
ruixp 2002-12-18
  • 打赏
  • 举报
回复
classes12.jar一定方对地方,ext目录安装java的那个目录下面的下面的一个目录
adonn 2002-12-18
  • 打赏
  • 举报
回复
还有数据库连接别在使用DriverManager的方法了,摆脱
自己在应用服务器上面建连接池吧
adonn 2002-12-18
  • 打赏
  • 举报
回复
先查oracle的jdbc去冬是否导到classpath里面
随便建了class
import oracle.jdbc.driver.OracleDriver;
然后编译一下看看有没有问题

假如已经导入,可以用
jdbc:oracle:thin:@192.168.5.253:1521:LPS
ip地址 端口 数据库名
作为jdbc的url

(假如使用WSAD开发,是不是wsad使用了自己的j2sdk?)
Meathead 2002-12-18
  • 打赏
  • 举报
回复

Class.forName(sDBDriver);这个地方出错.注册不成功
Meathead 2002-12-18
  • 打赏
  • 举报
回复
这是我的代码..
package user.ejb;


import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import javax.ejb.*;

/**
* Bean implementation class for Enterprise Bean: User
*/
public class UserBean implements javax.ejb.EntityBean {
private javax.ejb.EntityContext myEntityCtx;

//Êý¾Ý±í×Ö¶Î
private String Account;
private String Password;
private String Email;

//Êý¾ÝÔ´µÄJNDIÃû
//Mircosoft access Êý¾Ý¿â
// String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
// String jndiName = "jdbc:odbc:reguser";

//Á¬½ÓOracleÊý¾Ý¿â
String sDBDriver = "oracle.jdbc.driver.OracleDriver";
String jndiName = "jdbc:oracle:thin:@202.102.18.77:1521:reguser";

//DAO¶ÔÏó
private UserDAO DAO=new UserDAO();

/**
* getEntityContext
*/
public javax.ejb.EntityContext getEntityContext() {
return myEntityCtx;
}

/**
* setEntityContext
*/
public void setEntityContext(javax.ejb.EntityContext ctx) {
myEntityCtx = ctx;
}

/**
* unsetEntityContext
*/
public void unsetEntityContext() {
myEntityCtx = null;
}

/**
* ejbActivate
*/
public void ejbActivate() {
}

/**
* ejbCreate
*/
public user.ejb.UserKey ejbCreate() throws javax.ejb.CreateException {
return null;
}

/**
* ejbFindByPrimaryKey
*/
public user.ejb.UserKey ejbFindByPrimaryKey(user.ejb.UserKey primaryKey) throws javax.ejb.FinderException {
return primaryKey;
}

/**
* ejbLoad
*/
public void ejbLoad() {
//´ÓÉÏÏÂÎÄ»·¾³ÖÐÈ¡µÃÖ÷¼üÀà
UserKey userKey=(UserKey)myEntityCtx.getPrimaryKey();
this.Account=userKey.Account;
try
{
DAO.setConn(getConnection());
DAO.getUserByAccount(this.Account);
this.Password=DAO.getPassword();
this.Email=DAO.getEmail();
}
catch(Exception e)
{
throw new EJBException(e.toString());
}
}

/**
* ejbPassivate
*/
public void ejbPassivate() {
}

/**
* ejbPostCreate
*/
public void ejbPostCreate() throws javax.ejb.CreateException {
}

/**
* ejbRemove
*/
public void ejbRemove() throws javax.ejb.RemoveException {
}

/**
* ejbStore
*/
public void ejbStore() {
}

public UserKey ejbCreate(String account,String password,String email) throws javax.ejb.CreateException
{
this.Account=account;
this.Password=password;
this.Email=email;

try
{
DAO.setConn(getConnection());
DAO.setAccount(this.Account);
DAO.setPassword(this.Password);
DAO.setEmail(this.Email);
DAO.addUser();
return new UserKey(this.Account);
}

catch(Exception e)
{
throw new EJBException("ejbCreate:" + e.toString());
}
}

public void ejbPostCreate(String account,String password,String email) throws javax.ejb.CreateException{}

//´ÓJNDIÖлñÈ¡Ò»¸öConnection¶ÔÏó
private Connection getConnection() throws Exception
{
try {
Class.forName(sDBDriver); //×°ÔØÇý¶¯JDBC-ODBCÇÅÇý¶¯³ÌÐò
}
catch(java.lang.ClassNotFoundException e) {
System.err.println("getConnection(): " + e.getMessage());
}
try
{
return DriverManager.getConnection(jndiName, "scott", "tiger");
}
catch(Exception e)
{
throw new Exception("Á¬½ÓÊý¾Ý¿âʧ°Ü£º"+e.toString());
}
}

//¸ù¾ÝÓû§Õʺŷµ»ØÒ»¸öÖ÷¼ü¶ÔÏó
public UserKey ejbFindByAccount(String account) throws FinderException
{
String result;
try
{
DAO.setConn(getConnection());
result = DAO.getUserByAccount(account);
}
catch(Exception e)
{
throw new EJBException("ejbFindByAccount:" + e.toString());
}

if(result != "")
{
return new UserKey(result);
}
else
{
throw new ObjectNotFoundException(account + "²»´æÔÚ¡£");
}
}

//***Getter¼°Setter
/**
* Gets the account
* @return Returns a String
*/
public String getAccount() {
return Account;
}

/**
* Sets the account
* @param account The account to set
*/
public void setAccount(String account)
{
this.Account = account;
}
/**
* Gets the password
* @return Returns a String
*/
public String getPassword() {
return Password;
}
/**
* Sets the password
* @param password The password to set
*/
public void setPassword(String password) {
Password = password;
}

/**
* Gets the email
* @return Returns a String
*/
public String getEmail() {
return Email;
}
/**
* Sets the email
* @param email The email to set
*/
public void setEmail(String email) {
Email = email;
}

}
lilyheart1977 2002-12-18
  • 打赏
  • 举报
回复
给你我的代码看看。

package Sales;
import java.sql.*;

public class Ora8iConnect
{ ResultSet rs=null;
public Ora8iConnect(String db,String id,String pwd)
//public Ora8iConnect()
{
//dbUrl="130.54.4.144:1521:ORCL";
//userID="scitel";
//userPWD="scitel";
dbUrl=db;
userID=id;
userPWD=pwd;
beginConnect(); //连接数据库 }
/*-
返回一个connection对象
*/
public Connection getConnection(){return conn;}

/*-
*连接数据库,成功后返回1,否则返回0
*/
public int beginConnect()
{ try
{ //加载一个Oracle驱动
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//使用OCI8连接数据库 //conn=DriverManager.getConnection("jdbc:oracle:oci8:@"+dbNAME,userID,userPWD);
//使用thin连接数据库 conn=DriverManager.getConnection("jdbc:oracle:thin:@"+dbUrl,userID,userPWD);

return 1;
}
catch(SQLException e) //捕捉SQL违例 { System.out.println("在连接Oracle数据库时捕获");
while (e!=null)
{ System.out.println("SQLState:"+e.getSQLState());
System.out.println("Message :"+e.getMessage());
System.out.println("Vendor :"+e.getErrorCode());
e=e.getNextException();
System.out.println(" ");
}
conn=null;
return 0;
}
}
// 定义执行SQL语句的函数
public ResultSet executeQuery(String sql)
{
rs=null;
try{
conn=DriverManager.getConnection("jdbc:oracle:thin:@"+dbUrl,userID,userPWD) ;
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);

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

}

private Connection conn; //连接对象
private String dbUrl; //实例
private String userID; //用户名
private String userPWD; //密码

}
sam1zhao 2002-12-18
  • 打赏
  • 举报
回复
你的数据库服务器ORACLE版本是否和应用服务器上的ORACEL版本完全一致?
Meathead 2002-12-18
  • 打赏
  • 举报
回复
知道. 我写的和你的格式是一样的. 但. 只是IP省略了.

adonn(me是风) : 你说的好像不对. 我试过,还是不对呀.
sam1zhao 2002-12-18
  • 打赏
  • 举报
回复
String jndiName = "jdbc:oracle:thin:@IP:reguser"
这个串写地不对,"IP"后应该是服务器IP地址+:端口号+:连接串
例如:jdbc:oracle:thin:@192.168.101.203:1521:kani
adonn 2002-12-18
  • 打赏
  • 举报
回复
j2sdk
Meathead 2002-12-18
  • 打赏
  • 举报
回复
是放在j2sdk下面,还是放在j2sdkee下面吗
adonn 2002-12-18
  • 打赏
  • 举报
回复
直接放在所用jdk的jre/lib/ext下
adonn 2002-12-18
  • 打赏
  • 举报
回复
IBM的wsad东东支持oracle没有jbuilder的好
Meathead 2002-12-18
  • 打赏
  • 举报
回复
怎么配置. 是在j2eeskd. 请详细说明.谢谢
Brain1977 2002-12-18
  • 打赏
  • 举报
回复
???
你安装oracle的时候就装上了,如果你没装oracle,告诉我。我看看,我应该有
adonn 2002-12-18
  • 打赏
  • 举报
回复
classes12.jar!!
Meathead 2002-12-18
  • 打赏
  • 举报
回复
但在我的机器上没有Oracle的.
Brain1977 2002-12-18
  • 打赏
  • 举报
回复
我记得oracle自带jdbc的

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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