首页 > 编程知识 正文

c# oracle update,c# – 更新记录时,ExecuteNonQuery()在Update中返回-1

时间:2023-05-03 18:53:37 阅读:207641 作者:4018

我已经验证了我的方法/ Oracle过程是否正常工作,但在我的C#中,我始终从ExecuteNonQuery()返回-1.因此,下面的bool总是假的.我们只在DB(Oracle)中使用触发器来执行INSERT语句.我是否需要触发更新语句?

有什么建议为什么会发生?它肯定更新了一条记录:

public bool ChangePassword(long UserId, string NewPassword)

{

int rcds = 0;

using (OracleConnection dbConn = new OracleConnection(dbConnString))

using (OracleCommand dbCmd = new OracleCommand("PKG_USER.CHANGE_PASSWORD", dbConn))

{

try

{

string salt = GenerateSalt();

dbCmd.CommandType = CommandType.StoredProcedure;

dbCmd.Parameters.Add("p_USER_ID", OracleDbType.Int64, UserId, ParameterDirection.Input);

dbCmd.Parameters.Add("P_PASSWORD", OracleDbType.Varchar2, 128, EncodePassword(NewPassword, this.IsPasswordHashed, salt), ParameterDirection.Input);

dbCmd.Parameters.Add("P_PASSWORD_SALT", OracleDbType.Varchar2, 128, salt, ParameterDirection.Input);

if (dbConn.State != ConnectionState.Open) dbConn.Open();

rcds = dbCmd.ExecuteNonQuery();

}

catch (Exception e)

{

LastError = e.Message + " " + e.Source;

rcds = 0;

}

finally

{

dbCmd.Dispose();

dbConn.Dispose();

}

}

return (rcds > 0);

}

对不起……继承人SP:

PROCEDURE Change_Password(p_User_Id IN Users.User_Id%TYPE,

p_Password IN Users.Password%TYPE,

p_Password_Salt IN Users.Password_Salt%TYPE) IS

BEGIN

UPDATE Users

SET Password = p_Password,

Password_Salt = p_Password_Salt,

Password_Change_Date = SYSDATE

WHERE User_Id = p_User_Id;

END Change_Password;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。