我想通過我的程序在我們的數據庫上登錄,但是當我做我得到無效憑證,所以我不知道從哪裏開始希望任何人都可以幫助我,因爲我沒有與pwdencryp和pwdcompare之前和我一起工作我不知道該怎麼做才能得到它的工作當pwdencrypt被用於登錄時從哪裏開始?
我的代碼:
protected String doInBackground(String... params) {
if (userid.trim().equals("Developer")|| password.trim().equals("Dev!n_234"))
isSuccess2=true;
z = getString(R.string.login_succes);
if(userid.trim().equals("")|| password.trim().equals(""))
z = getString(R.string.indsæt_rigtigt_bruger);
else
{
try {
Connection con = connectionClass.CONN();
if (con == null) {
z = getString(R.string.Forbindelses_fejl)+"L1)";
} else {
CallableStatement cs = null;
String query = "{call [system].[usp_validateUserLogin] (?,?,?,?,?)}";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
CallableStatement ps = con.prepareCall(query);
ps.setString(1, userid);
ps.setString(2, password);
ps.setInt(3,72);
ps.setNull(4, Types.BOOLEAN);
ps.registerOutParameter(5, Types.VARCHAR);
cs.executeUpdate();
if(rs.next())
{
z = getString(R.string.login_succes);
isSuccess=true;
}
else
{
z = getString(R.string.Invalid_Credentials);
isSuccess = false;
}
}
}
catch (Exception ex)
{
isSuccess = false;
z = getString(R.string.Exceptions)+"L2)";
Log.e("MYAPP", "exception", ex);
}
}
return z;
}
}
}
} 程序
ALTER PROCEDURE [system].[usp_validateUserLogin]
@p_Login NVARCHAR (50)
, @p_Password NVARCHAR (32)
, @p_CompanyID INT
, @p_OutDetails BIT = 1
, @p_AuthenticationTicket VARCHAR(200) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @errNo INT
, @recCount INT
, @res INT
SELECT u.*
INTO #tmpLogin
FROM system.[User] AS u WITH (NOLOCK)
WHERE (u.Login = @p_Login)
AND (u.Company_ID = @p_CompanyID)
AND (pwdcompare (@p_Password, u.Passwd) = 1)
AND (u.Status = 0) --Active
SELECT @errNo = @@ERROR
, @recCount = @@ROWCOUNT
IF (@errNo <> 0)
BEGIN
RETURN 1010
END
IF (@recCount = 1)
BEGIN
DECLARE @userID INT
SELECT @userID = ID
FROM #tmpLogin
EXEC @res = system.usp_renewAuthenticationTicket @p_DoerTicket = ''
, @p_AuthenticationTicket = @p_AuthenticationTicket OUTPUT
, @p_UserID = @userID
, @p_CompanyID = @p_CompanyID
IF (@res <> 0)
RETURN @res
END
--SET @p_AuthenticationTicket = 'TESTAUTHENTICATIONTICKET'
IF (@p_OutDetails = 1)
BEGIN
SELECT *
FROM #tmpLogin
END
RETURN 0
END
,這裏是爲用戶程序註冊
ALTER PROCEDURE [system].[usp_iudUser]
@p_ID INT = NULL OUTPUT
, @p_Login NVARCHAR (50) = NULL
, @p_Password NVARCHAR (32) = NULL
, @p_FullName NVARCHAR (100) = NULL
--, @p_LastName NVARCHAR (50) = NULL
, @p_EMail NVARCHAR (200) = NULL
, @p_Status TINYINT = NULL
, @p_Roles VARCHAR (200) = NULL
, @p_DoerTicket VARCHAR (200)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @doerUserID INT
, @doerCompanyID INT
EXEC system.usp_validateAuthenticationTicket @p_Ticket = @p_DoerTicket
, @p_UserID = @doerUserID OUTPUT
, @p_CompanyID = @doerCompanyID OUTPUT
MERGE INTO system.[User] AS target
USING (SELECT @p_ID
, @doerCompanyID
, @p_Login
, @p_Password
, @p_FullName
, @p_Roles
, @p_Status
/*, @p_FirstName
, @p_LastName*/
, @p_EMail) AS source (ID
, CompanyID
, Login
, Password
, FullName
, Roles
, Status
/*, FirstName
, LastName*/
, EMail)
ON (target.ID = source.ID)
AND (target.Company_ID = source.CompanyID)
WHEN MATCHED THEN
UPDATE SET
target.Login = CASE WHEN source.Status = 200 THEN target.Login + '_' + CAST (source.ID AS VARCHAR (10)) ELSE target.Login END --Login can not be changed
, target.Passwd = ISNULL (pwdencrypt (source.Password), target.Passwd)
, target.FullName = ISNULL (source.FullName, target.FullName)
--, target.LastName = ISNULL (source.LastName, target.LastName)
, target.EMail = ISNULL (source.EMail, target.EMail)
, target.Roles = ISNULL (source.Roles, target.Roles)
, target.Status = ISNULL (source.Status, target.Status)
WHEN NOT MATCHED BY TARGET AND source.ID IS NULL THEN
INSERT (Company_ID
, Login
, Passwd
, FullName
, Roles
, Status
/*, FirstName
, LastName*/
, EMail)
VALUES (source.CompanyID
, source.Login
, pwdencrypt (source.Password)
, source.FullName
, NULLIF (RTRIM (source.Roles), '')
, ISNULL (source.Status, 0)
/*, source.FirstName
, source.LastName*/
, NULLIF (source.EMail, ''));
IF (@@ROWCOUNT <> 1)
BEGIN
RETURN 1010
END
IF (@p_Id IS NULL)
SET @p_Id = SCOPE_IDENTITY ()
RETURN 0
END
如果我在PARAM 4用「1」,則我得到一個意外的參數標記在38位置並且那,p_AuthenticationTicket = p_AuthenticationTicket OUTPUT –
參數類型是一個位,因此嘗試的值沒有引號。 –
我不能使用沒有qoutes的值,所以我嘗試了一個String.valueOf(測試))這是一個整數,但多數民衆贊成在相同 –