我正在开发(将应用程序数据库从MS SQL转换为MySQL)使用C#.Net和MySQL的应用程序。我的C#代码和存储过程在MS SQL中工作得很完美,但是当试图与MySQL一起获取参数错误时。我的C#代码是下面和MySQL存储过程(用CALL重点工作和参数编辑器测试)MySQL和C#.Net存储过程和多个参数
public DataTable AlapValidateUser(string email, string password,string Type)
{
DataTable dt = new DataTable();
cmd = new MySqlCommand("UserIdValidation");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = cnn;
string pass = reEncryptpassword(password);
MySqlParameter pramEmail = new MySqlParameter("@v_emailId", email);
pramEmail.Direction = ParameterDirection.Input;
cmd.Parameters.Add(pramEmail);
MySqlParameter pramPassword = new MySqlParameter("@v_password", pass);
pramPassword.Direction = ParameterDirection.Input;
cmd.Parameters.Add(pramPassword);
MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
if (cnn.State != ConnectionState.Open ||
cnn.State == ConnectionState.Broken ||
cnn.State != ConnectionState.Connecting ||
cnn.State != ConnectionState.Executing ||
cnn.State != ConnectionState.Fetching)
cnn.Open();
adap.Fill(dt);
cnn.Close();
return dt;
}
MySQL的存储过程运行完全是在这里:
CREATE DEFINER=`root`@`localhost` PROCEDURE `UserIdValidation`(v_emailId NATIONAL VARCHAR(100),v_password
NATIONAL VARCHAR(50))
BEGIN
SELECT UserId ,eMail,BloodGroup
,BloodGroupID,Country AS CountrySlNo ,CountryName ,State ,District
,Location,fName,lName ,DonorType ,LastLogIn ,Validated ,ProfileImage
,MaritalStatus ,Sex ,Height ,Weight ,HealthStatus
,MyFileLocation FROM vwUser WHERE eMail = v_emailId AND
PASSWORD = v_password AND Validated = 'Y';
END$$
在执行过程中的异常,如下:
“不正确的数量为PROCEDURE alap.UserIdValidation参数;预计2,拿到1”
能否请你帮我找出犯错要么。
更新:我的MySQL连接器是v.6.6.5。我已经在C#中的调试模式中检查了参数是否正确,并且可以在命令对象中看到两个参数。接下来它试图填充适配器,因此这个命令对象从Connector传递到MySQL,并且缺少参数。我试图通过创建第三行添加相同的第一个参数,然后gettinng错误,相同的参数已经存在。 从这个测试中,我确定它是纯粹的MySQL或MySQL连接器错误。 我不知道如何在这样的数据库中有这么多人使用mysql这个bug。 谢谢 苏曼
存储过程的原型在哪里?错误消息声称提供的参数数量不正确;我们应该如何帮助哟而不知道正确的调用模式? – 2013-05-04 21:31:38
您好我已经用mysql代码更新了我的帖子。 – 2013-05-04 21:53:17