为什么这个连接池类编译时出现错误,DataSource类在sql包中没有找到的错误

ztm0223 2003-07-22 10:54:16
错误出现在下列程序中的javax.sql.DataSource ds = (javax.sql.DataSource)obj;
说sql包中DataSource类,为不能解析符号。烦劳大家看一下
程序如下:
import javax.naming.Context;
import javax.naming.InitialContext;
import java.sql.*;

public class DBConnect { //数据库连接BEAN


static String jndiName="jdbc/mysqlserver";
public Statement stmt; //新建sql语句管理对象
public Connection conn = null; //新建数据库连接管理对象
public ResultSet rs = null; //返回数据结果集对象


public static Connection getConnection() throws Exception{
Connection conn = null;
try {
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
//获取连接池对象
Object obj = ctx.lookup(jndiName);
//类型转换
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
//获得数据库连接
conn= ds.getConnection();
} catch (java.lang.SecurityException se) {
throw se;
} catch(Exception e) {
e.printStackTrace();
throw e;
}
return conn;
}

//功能说明:执行带结果集的sql语句
//参 数 值: 需执行的SQL字符串(SELECT语句)
//返 回 值:返回数据结果集
public ResultSet executeQuery(String SQL){
rs = null;
try{
stmt = conn.createStatement() ;
rs=stmt.executeQuery(SQL) ;
}
catch(SQLException ex){
System.out.print("execute sql statement is error!") ;
}
return rs;
}

//执行不带结果集的sql语句
//参 数 值: 需执行的SQL字符串(INSERT,UPDATE,DELETE..)
//返 回 值:空
public void executeUpdate(String SQL){
try{
stmt = conn.createStatement() ;
stmt.executeUpdate(SQL);
}
catch(SQLException ex){
System.out.println("execute sql statement is error!") ;
}
}

//关闭数据库连接
public void destroy(){
try{
stmt.close() ;
conn.close() ;
}
catch(Exception e){
e.printStackTrace() ;
}
}
}
...全文
164 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqi8 2003-07-25
  • 打赏
  • 举报
回复
<%@page language="java" contentType="text/html;charset=gb2312""%>
<%@page import="java.sql.*,javax.naming.Context,javax.naming.InitialContext"%>
<%@page import="javax.sql.DataSource"%>

<%
DataSource source = (DataSource)new InitialContext().lookup("sqlds");
Connection conn = source.getConnection();

if ( conn == null) {
out.println("conn is null");
return ;
}

Statement stmt=conn.createStatement();
String sql="select * from admin";
ResultSet rs=stmt.executeQuery(sql);

while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
<br>

<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
testjava 2003-07-25
  • 打赏
  • 举报
回复
不用那么复杂吧,
<%@page language="java" contentType="text/html;charset=gb2312""%>
<%@page import="java.sql.*,javax.naming.Context,javax.naming.InitialContext"%>
<%@page import="javax.sql.DataSource"%>

<%
DataSource source = (DataSource)new InitialContext().lookup("sqlds");
Connection conn = source.getConnection();

if ( conn == null) {
out.println("conn is null");
return ;
}

Statement stmt=conn.createStatement();
String sql="select * from admin";
ResultSet rs=stmt.executeQuery(sql);

while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
<br>

<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>

ztm0223 2003-07-24
  • 打赏
  • 举报
回复
Context envCtx = (Context)initCtx.lookup("java:comp/env");
ds = (DataSource)envCtx.lookup("jdbc/Test");//你定义的连接池的名字
请问大家第一个lookup是查找什么内容
第二个lookup查找的是什么内容。
连接池已经建好了,名字为WLSQLServerConnectionPool
数据源名字:JspDataSource
Jndiname:SqlServer
对应在程序中该怎么写呢?数据源配置无误,已经在console里经过测试
我真的急用望大家帮忙。
hhuzhj 2003-07-23
  • 打赏
  • 举报
回复
<%@page language="java" contentType="text/html;"%>
<%@page import="java.sql.*,javax.naming.Context,javax.naming.InitialContext"%>
<%@page import="javax.sql.DataSource"%>


<%

DataSource ds = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");


ds = (DataSource)envCtx.lookup("jdbc/Test");//你定义的连接池的名字
conn = ds.getConnection();


if ( conn == null) {
out.println("conn is null");
return ;
}

out.println(conn.toString());
out.println("<br/>");
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from dept");//要连接到表的名字

while ( rs.next() ) {
out.println(rs.getString("dept_name"));
out.println("<br/>");
}

rs.close();
conn.close();
%>
ejbcreate 2003-07-22
  • 打赏
  • 举报
回复
你这种:
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
//获取连接池对象
Object obj = ctx.lookup(jndiName);
//类型转换
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
//获得数据库连接
conn= ds.getConnection();
是由servlet引擎自己查找的,也就是说是用在jsp页里的。
如果是写一个javabean来对数据库操作:

.........
public Connection getConnection() throws Exception
{
Connection lConn = null;
String lConnStr = "xxxx";
String lDBUser = "bbbb";
String lDBPassWord = "cccc";
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
//DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
lConn = DriverManager.getConnection(lConnStr, lDBUser, lDBPassWord);
}
catch(ClassNotFoundException ex)
{
System.out.println("ClassNotFoundException: "+ex.toString());
}
catch(SQLException SqlEx)
{
System.out.println("getConnection() Excpt: "+SqlEx.toString());
}
return lConn;
}
.............
bdsc 2003-07-22
  • 打赏
  • 举报
回复
java.sql.*; 不是 javax.sql.*;
ztm0223 2003-07-22
  • 打赏
  • 举报
回复
我想利用数据库连接池,进行数据库的操作。怎么办?

81,114

社区成员

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

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