class的路径有问题,你再检查下。
把驱动程序拷贝到Webapps\Your document\WEB-INF\lib下面。
你的程序和我以前一样,也是写的很菜,不规范,Bean对数据库操作应该使用异常,这个是改动了一点的,请你看看。
package sql;
import java.sql.*;public class sql
{
private Connection con;
//初始化连接
public sql()
{
String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String SERVANDDB="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=web";
String USER="sa";
String PWD="";//最好数据库用SQL SERVER用户登陆,而不是WINDOWS用户登陆,添加好密码。
try
{
Class.forName(CLASSFORNAME);
con=DriverManager.getConnection(SERVANDDB,USER,PWD);
}
catch(Exception e)
{
e.printStackTrace();
}
}
//查询数据库也应该使用try,catch,这部分也有可能产生异常,再改改,记得return result,自己改了。
public sql(){}
public ResultSet quy(String find){
PreparedStatement stmt=
conn.prepareStatement
(find,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=stmt.executeQuery();
}
}
把驱动程序拷贝到Webapps\Your document\WEB-INF\lib下面。
你的程序和我以前一样,也是写的很菜,不规范,Bean对数据库操作应该使用异常,这个是改动了一点的,请你看看。
package sql;
import java.sql.*;public class sql
{
private Connection con;
//初始化连接
public sql()
{
String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String SERVANDDB="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=web";
String USER="sa";
String PWD="";//最好数据库用SQL SERVER用户登陆,而不是WINDOWS用户登陆,添加好密码。
try
{
Class.forName(CLASSFORNAME);
con=DriverManager.getConnection(SERVANDDB,USER,PWD);
}
catch(Exception e)
{
e.printStackTrace();
}
}
//查询数据库也应该使用try,catch,这部分也有可能产生异常,再改改,记得return result,自己改了。
public sql(){}
public ResultSet quy(String find){
PreparedStatement stmt=
conn.prepareStatement
(find,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=stmt.executeQuery();
}
}
我暂时还有在jsp里调用它,因为不能把它编译成.class文件。我这前面的一点点都没法通过。所以后面的也没有继续了。
Class.forName(drv)这段你先把他写在方法里面然后扑捉ClassNotFoundException异常,另外还有SQLException.
修改以后我这里编译通过了。
具体的改动应该由你自己来,这样才能找到根本问题。
public class sql{
public Connection conn;
public ResultSet rs;
public Statement stmt;
public sql(){
try{
String drv="com.microsoft.jdbc.sqlserver.SQLServerDriver";
Class.forName(drv);
}
catch (ClassNotFoundException e){
System.out.println("Create Connection Error!"+e);
}
try{
String USER="sa";
String PWD="";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=web";
conn = DriverManager.getConnection(url,USER,PWD);
}catch(SQLException e){
System.out.println(e);
}
}public ResultSet search(String sql){
try{
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}catch(Exception e){
System.out.println("Database query error:" + e);
}
return rs;
}public void close(){
try{
if(rs!=null)
rs.close();
if(stmt!=null)
stmt.close();
if(conn!=null)
conn=null;
}catch(SQLException e){
System.out.println("Database close error."+e);
}
}public static void main(String[] args){
sql dc=new sql();
}}
编译已通过。并将sql.class文件放在web-inf\classes\sql目录下。我在jsp文件中这样调用出错:<jsp:useBean id="srch" class="sql.sql" scope="application"/>
<%
ResultSet rs=srch.search("select * from login");
srch.close();
%>出错信息如下:javax.servlet.ServletException: sql.sql.search(Ljava/lang/String;)Ljava/sql/ResultSet;
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.sqlbean_jsp._jspService(sqlbean_jsp.java:74)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NoSuchMethodError: sql.sql.search(Ljava/lang/String;)Ljava/sql/ResultSet;
org.apache.jsp.sqlbean_jsp._jspService(sqlbean_jsp.java:63)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
try{
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}catch(Exception e){
System.out.println("Database query error:" + e);
}
return rs;
}把这里的sql改个名字 跟类名相同了
在JSP文件里加上:<%@ page import="java.sql.*"%>
我也在为这个事头痛。
一下
再问一个很菜的问题:关于记录的操作包括增删改代码是否都可以写成bean的格式调用?
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<jsp:useBean id="srch" class="sql.sql" scope="application"/>
<%
try{
ResultSet rs=srch.search("select * from login");
while(rs.next()){
out.print(rs.getString(1));
}
srch.close();
}catch(Exception e){
out.println("与数据库连接不成功");
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
<jsp:useBean id="tt" class="sql.sql" scope="application"/>
<%
ResultSet rs=tt.search("select * from login");
if(rs==null){
System.out.println("resultset is null.");}
else{
String str1=null;
String str2=null;
String str3=null;
while(rs.next()){
str1=rs.getString(1);
str2=rs.getString(2);
str3=rs.getString(3);
out.println(str1+" ");
out.println(str2+" ");
out.println(str3+"<br>");
}
}
%>
</body>
</html>
sql.java:
package sql;import java.sql.*;public class sql{
public Connection conn;
public ResultSet rs;
public Statement stmt;
public sql(){
try{
String drv="com.microsoft.jdbc.sqlserver.SQLServerDriver";
Class.forName(drv);
}
catch (ClassNotFoundException e){
System.out.println("Create Connection Error!"+e);
}
try{
String USER="sa";
String PWD="";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=web";
conn = DriverManager.getConnection(url,USER,PWD);
}catch(SQLException e){
System.out.println(e);
}
}public ResultSet search(String sql){
try{
if(conn==null){
System.out.println("cannot connect to db.");
}
else
{
stmt = conn.createStatement
(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(sql);
}
}catch(Exception e){
System.out.println("Database query error:" + e);
}
return rs;
}public void close(){
try{
if(rs!=null)
rs.close();
if(stmt!=null)
stmt.close();
if(conn!=null)
conn=null;
}catch(SQLException e){
System.out.println("Database close error."+e);
}
}}
期盼大侠指点一二。
那位贴一个分页代码,建议:
1.数据库连接和分页都用bean,而且分开
2.展示调用的jsp文件
3.调试好的!
请那位专家显显身手了?
我不知道兄台是干什么的。是没有思路,不知道怎么下手,还是不想做,甚至于不懂,也不想明白。 请原谅……
那有下载!我用的是iis+resin来运行jsp,请问这个驱动应该放到那里?
mssqlserver.jar
msutil.jar
我只是初学者,只是想学习学习高手的思路!也可以说是不懂吧!
http://community.csdn.net/Expert/topic/3271/3271268.xml?temp=.5339014
帖子已开,欢迎高手光临!
请到
http://community.csdn.net/Expert/topic/3271/3271306.xml?temp=2.676028E-02
来接分吧
不明白,怎么加?
不需要加dsn!