package com.test;
import java.io.*;
import java.sql.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginCL extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse resp)
{
//编写登陆界面
Connection conn=null;
Statement set=null;
ResultSet rset=null;
try
{
String u=req.getParameter("username");
String p=req.getParameter("pwd");
//连接数据库的驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//得到数据库的连接
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=ManageSystem");
//创建一个statement
set=conn.createStatement();
//执行SQL语句
rset=set.executeQuery("select top 1 * from users where username='"+u+"'");
if(rset.next())
{
String pass=rset.getString(1);
if(pass.trim().equals(p))
{
resp.sendRedirect("welcome");
}
}
else
{
resp.sendRedirect("login");
}
}
catch (Exception e)
{
// TODO: handle exception
e.printStackTrace();
}
finally
{
try
{
if(rset!=null)
rset.close();
if(set!=null)
set.close();
if(conn!=null)
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse resp)
{
this.doGet(req, resp);
}
}
这个程序是通过jdbc来连接SQL server 2008数据库,但是conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=ManageSystem");
语句总是抛出如下的异常:
java.lang.NoSuchMethodError: com.microsoft.util.UtilDebug.setPrintWriter(Ljava/io/PrintWriter;)V
com.microsoft.jdbc.base.BaseDriver.setupDebugging(Unknown Source)
com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
java.sql.DriverManager.getConnection(DriverManager.java:582)
java.sql.DriverManager.getConnection(DriverManager.java:207)
com.test.LoginCL.doGet(LoginCL.java:23)
com.test.LoginCL.doPost(LoginCL.java:66)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
请各位大侠帮小弟一把,这个到底是怎么回事。在下先谢谢了!!!急急急急!!!
------解决方案--------------------
数据库驱动jar包放了没
------解决方案--------------------
你写的 登录处理 那个servlet 的dopost PrintWriter有bug 你看一下.............
------解决方案--------------------
就是你登录提交到那个Servlet处理
------解决方案--------------------
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=ManageSystem");
这个好像不要microsoft:这句吧
------解决方案--------------------
代码给你修改了一下 你弄上去看看
- Java code
package com.test;import java.io.*;import java.sql.*;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//把表单设置为post提交public class LoginCL extends HttpServlet {public void doGet(HttpServletRequest req,HttpServletResponse resp){ this.doPost(req,resp);}public void doPost(HttpServletRequest req,HttpServletResponse resp){//编写登陆界面Connection conn=null;PreparedStatement pstm=null;ResultSet rset=null;String u=req.getParameter("username");//从登录页面取出值String p=req.getParameter("pwd");try {//连接数据库的驱动Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//得到数据库的连接conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=ManageSystem");String sql="select * from users where username=? and password=?";pstm=conn.prearedStatement();//执行预编译rset=pstm.executeQuery(sql);//执行SQL语句把返回的结果放在rset结果集中//rset=set.executeQuery("select top 1 * from users where username='"+u+"'");if(rset.next()){String pass=rset.getString("password");//从结果集中把用户名和密码取出来String username=rest.getString("name");if(p.trim().equals(pass)&&p.equals(username))//判断一下{resp.sendRedirect("welcome");//登录成功跳到成功页面}}else {resp.sendRedirect("login");//登录失败跳到登录页面}} catch (Exception e){// TODO: handle exceptione.printStackTrace();}finally{try{if(rset!=null)rset.close();if(set!=null)set.close();if(conn!=null)conn.close();}catch(Exception e){e.printStackTrace();}}}}