MVP 패턴 프로그래밍을 사용하고 있습니다. Task 클래스에서이 함수를 호출하려고합니다. 매퍼 클래스 Mapper 클래스의 예외 범위를 벗어나는 인수
private List<ValuePair > DisplayUserRole(string sName)
{
MySqlConnection connection = DbAccess.OpenConnection(ConnectionStringName.LabTrack);
_mapper1 = new UserAuthorizationMapper(connection);
int ixCustomer=1;
int ixProgram=1;
int ixWorkPackage=1;
int ixActivity=1;
string ixUsercode="626e28e8-e67a-4d11-8d2c-129d0ab79e96";
bool isUserAuthorized = _mapper1.IsUserAuthorised(sName, ixCustomer, ixProgram, ixWorkPackage, ixActivity, ixUsercode);
List<ValuePair> listUserRoleValuePair = new List<ValuePair>();
var ixUserList= _mapper1.FindUserRoleLike(sName,ixCustomer,ixProgram,ixWorkPackage,ixActivity);
User user = null;
foreach (var ixUser in ixUserList)
{
user = new UserMapper(connection).FindById(ixUser);
if (user != null)
{
var name = user.SFirstName + " " + user.SLastName;
listUserRoleValuePair.Add(new ValuePair(ixUser, name));
}
}
return listUserRoleValuePair;
}
나는 "인덱스 및 길이는 문자열이있는 위치를 참조해야합니다"라고 선택 쿼리에 ArgumentoutofRangeException을 얻고있다.
public bool IsUserAuthorised(string userRole, int ixCustomer, int ixProgram, int ixWorkPackage, int ixActivity, string ixUser)
{
bool result = false;
SelectAll(Cmd(@"SELECT CASE WHEN Count(*)>=1 THEN 'True' "+
" ELSE 'False' END AS IsUserAuthorised " +
" FROM (SELECT ua.ixUserAuthorization FROM tblechecklistuserroleassignmentxref ra "+
" INNER JOIN tblechecklistuserrole ur ON ur.ixUserRole=ra.ixUserRole AND ur.sname='?0' "+
" INNER JOIN tblechecklistuserauthorization ua ON au.ixUserAuthorization=ra.ixUserAuthorization "+
" AND ua.ixcustomer='?1'AND ua.ixprogram='?2'AND ua.ixworkpackage='?3'AND ua.ixactivity='?4' "+
" AND ua.ixUser='?5') a ",
userRole,
ixCustomer,
ixProgram,
ixWorkPackage,
ixActivity,
ixUser),
delegate(MySqlDataReader reader)
{
result=Convert.ToBoolean(GetDbValue<string>(reader,"isUserAuthorised"));
});
return result;
}
코드가 실행되도록 내 쿼리를 수정하는 방법.