日期:2014-05-20  浏览次数:20844 次

HttpServlet连接数据库的问题
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 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();
}
}
}
}