【发布时间】:2014-12-26 16:25:51
【问题描述】:
我有需要连接到 sqlserver 进行登录的 Web 服务,但不知何故它不起作用并引发异常。我使用以下步骤进行连接:
来自服务客户端:
TrackingWS_Service service=new TrackingWS_Service();
User user = service.getTrackingWSPort().login(username,password);
TrackingWS_Service 是同一项目中生成的类:
@WebServiceClient(name = "TrackingWS", targetNamespace = "http://webservices/", wsdlLocation = "http://localhost:8080/TrackingSystem/TrackingWS?wsdl")
public class TrackingWS_Service extends Service
{
@WebEndpoint(name = "TrackingWSPort")
public TrackingWS getTrackingWSPort() {
return super.getPort(new QName("http://webservices/", "TrackingWSPort"), TrackingWS.class);
}
}
界面TrackingWs:
@WebService(name = "TrackingWS", targetNamespace = "http://webservices/")
@XmlSeeAlso({
ObjectFactory.class
})
public interface TrackingWS {
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName = "login", targetNamespace = "http://webservices/", className = "webservices.Login")
@ResponseWrapper(localName = "loginResponse", targetNamespace = "http://webservices/", className = "webservices.LoginResponse")
@Action(input = "http://webservices/TrackingWS/loginRequest", output = "http://webservices/TrackingWS/loginResponse")
public User login(
@WebParam(name = "arg0", targetNamespace = "")
String arg0,
@WebParam(name = "arg1", targetNamespace = "")
String arg1);
}
在服务项目中,我有以下内容:
TrackingWs - 网络服务:
@WebService(serviceName = "TrackingWS")
public class TrackingWS {
@WebMethod
public User login(String username,String password){
DBOperations dbOperations=new DBOperations();
return dbOperations.findUser(username, password);
}
}
数据库操作:
public class DBOperations {
private Connection connection = null;
private ResultSet rs = null;
private java.sql.PreparedStatement pst = null;
public synchronized User findUser(String username,String password){
connection=Connect.ConnectDb();
String sql="SELECT * FROM [Assignment5].[dbo].[User] WHERE Username=? AND Password=?";
User user=null;
int id;
String usrname;
String pasword;
String type;
try{
pst=connection.prepareStatement(sql);
pst.setString(1, username);
pst.setString(2, password);
rs=pst.executeQuery();
if(rs.next()){
id=rs.getInt("ID");
usrname=rs.getString("Username");
pasword=rs.getString("Password");
type=rs.getString("Type");
user=new User(id,usrname,pasword,type);
close();
return user;
}
}
catch(SQLException e){
e.printStackTrace();
}
try {
close();
} catch (SQLException ex) {
Logger.getLogger(DBOperations.class.getName()).log(Level.SEVERE, null, ex);
}
return user;
}
}
最后是连接:
公共类连接{ // 连接 conn=null;
public static Connection ConnectDb(){
try {
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=Assignment5;integratedSecurity=true;");
return conn;
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
return null;
}
}
}
我设置了 sqljdbc4,并在 Web 服务项目中复制了 sqljdbc_auth.dll。我不知道为什么在调用 getConnection() 时会抛出异常。
【问题讨论】:
-
1.您没有加载驱动程序类。 2. 什么错误?找不到合适的驱动程序或找不到类?
-
您遇到什么错误或异常...请打印堆栈跟踪
-
我看不到错误,因为我尝试从服务连接到 db,当我想显示错误时,我在 catch 分支上收到错误,所以我只知道它发生了当我尝试连接到数据库时
标签: java sql-server netbeans