SQL Server 2005 と JDBC に苦労しています。私はストアドプロシージャを持っています:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER proc [dbo].[sp_logincheck]
@username as nvarchar(50),
@password as nvarchar(50)
as
begin
select *
from users
where user_name = @username
and password = @password
and is_active = 'Yes'
end
そして私のUser
クラスは次のとおりです。
import java.sql.*;
public class User {
private String username;
private User(String username){
this.username = username;
}
public static User login(String username, char [] password) throws SQLException{
if(username == null || password == null){
throw new IllegalArgumentException("Illegal arguments passed to method");
}
if(login1(username, password)){
return new User(username);
}
return null;
}
private static boolean login1(String username, char [] password) throws SQLException{
Connection connection = null;
CallableStatement statement = null;
try{
connection = DriverManager.getConnection(AppParameters.dbURL, AppParameters.dbUsername, AppParameters.dbPassword);
}catch(SQLException e){
throw e;
}
try{
statement = connection.prepareCall("{ ? = call dbo.sp_logincheck(?,?) }");
statement.registerOutParameter(1, Types.INTEGER);
statement.setString(2, username);
statement.setString(3, new String(password));
statement.execute();
if(statement.getInt(1) == 1){
System.out.println("Login Successfull");
return true;
}
System.out.println("Login Failed");
return false;
}catch(SQLException sqle){
sqle.printStackTrace();
throw sqle;
}finally{
try{
statement.close();
}catch(Exception e){
}
try{
connection.close();
}catch(Exception e){
}
}
}
public String getUsername(){
return username;
}
}
呼び出しlogin()
メソッドは常に出力しLogin Failed
ます。SQL Server でストアド プロシージャを使用し、JDBC を使用してユーザー ログインを実行するにはどうすればよいですか? それとも、生の SQL ステートメントを使用する方がよいでしょうか? これについて私を案内してください。
編集:
また、ストアド プロシージャ内にクエリResultSet
があるため、上記のストアド プロシージャからを取得する方法も知りたいです。select