DataSource是怎么连接oracle的啊?

wenyuanhao 2009-11-27 12:05:32
有个项目用到到数据源,但是不会用,急盼赐教!
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup("d:test/oracle");
conn = ds.getConnection();
这块有问题,"d:test/oracle"这里是我的表空间存放数据文件的目录,以下是连接数据库的代码,运行时报错:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial


/**
*
*/
package com.cattsoft.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

/**
* @author Administrator
*
*/
public class ConnOracle {

private DataSource ds;
private Connection conn;
private PreparedStatement ps;

/*
<Resource name="DTmobile" auth="Container" type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
username="cattsoft"
password="cattsoft"
maxActive="80"
maxIdle="20"
maxWait="-1" />
*/


/**
*
*/
public ConnOracle() {
// TODO Auto-generated constructor stub
try {
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup("d:test/oracle");
conn = ds.getConnection();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 获取PreparedStatement
*/
public PreparedStatement getPstmt(String sql){
try {
ps = conn.prepareStatement(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ps;
}

/**
* 关闭连接
*/
public void close(){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

public static void main(String[] args){
ConnOracle co = new ConnOracle();
PreparedStatement ps = co.getPstmt("select * from t_user");
try {
ResultSet rs = ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
co.close();
}
}
...全文
425 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
三界五行外 2009-11-27
  • 打赏
  • 举报
回复
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup("d:test/oracle");
conn = ds.getConnection();

这段代码看着怎么那么想是通过数据库连接池获取连接的,lookup里面要填的应该是JNDI的名称,不能填Oracle路径的。
alpha 2009-11-27
  • 打赏
  • 举报
回复
http://www.ixpub.net/thread-768178-1-1.htmlhttp://www.ixpub.net/thread-768178-1-1.html

参考 这里 就可以了。
whereusejava 2009-11-27
  • 打赏
  • 举报
回复
"d:test/oracle"这样的路径在项目中是找不到的

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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