Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用数组为cmdmysql.Parameters.Add分配输入值_C#_Mysql - Fatal编程技术网

C# 使用数组为cmdmysql.Parameters.Add分配输入值

C# 使用数组为cmdmysql.Parameters.Add分配输入值,c#,mysql,C#,Mysql,我正在尝试使用数组中的值将值插入到“cmdmysql.Parameters.Add”中。但它生成的异常值已定义。以下是我的代码: cmdmysql.CommandType = System.Data.CommandType.StoredProcedure; string cd = ab; string[] words = ab.Split(' '); foreach (string word in words) { cmdmysql.Parameters.Add("@_maxvalue

我正在尝试使用数组中的值将值插入到“cmdmysql.Parameters.Add”中。但它生成的异常值已定义。以下是我的代码:

cmdmysql.CommandType = System.Data.CommandType.StoredProcedure;
string cd = ab;
string[] words = ab.Split(' ');

foreach (string word in words)
{
    cmdmysql.Parameters.Add("@_maxvalue", MySqlDbType.Double).Value = words[0];
    cmdmysql.Parameters.Add("@p_userid", MySqlDbType.Double).Value = words[1];
    cmdmysql.Parameters.Add("@p_templateid", MySqlDbType.Double).Value = words[2];
    cmdmysql.Parameters.Add("@p_resultid", MySqlDbType.Double).Value = words[3];
    cmdmysql.Parameters.Add("@p_duration", MySqlDbType.Decimal).Value = words[4];
    cmdmysql.Parameters.Add("@p_mode", MySqlDbType.VarChar).Value = words[5];
    cmdmysql.Parameters.Add("@p_status", MySqlDbType.VarChar).Value = words[6];
    cmdmysql.Parameters.Add("@p_description", MySqlDbType.Double).Value = words[7];
    cmdmysql.Parameters.Add("@p_id", MySqlDbType.Double).Direction = System.Data.ParameterDirection.Output;
}
例如,如果我尝试使用单词[0]将值插入@p_maxvalue,它会生成一个异常@p_maxvalue已经定义。
有人知道这一点吗?

问题在于foreach循环。对于给定的参数名,命令只能包含一个值,但是,当word集合中有多个单词时,指定的代码将尝试使用相同的参数名两次。

问题在于foreach循环。对于给定的参数名,命令只能包含一个值,但是,当word集合中有多个单词时,指定的代码将尝试使用相同的参数名两次。

请勿使用循环

if(words.Length==8)
{
    cmdmysql.Parameters.Add("@_maxvalue", MySqlDbType.Double).Value = words[0];
    cmdmysql.Parameters.Add("@p_userid", MySqlDbType.Double).Value = words[1];
    cmdmysql.Parameters.Add("@p_templateid", MySqlDbType.Double).Value = words[2];
    cmdmysql.Parameters.Add("@p_resultid", MySqlDbType.Double).Value = words[3];
    cmdmysql.Parameters.Add("@p_duration", MySqlDbType.Decimal).Value = words[4];
    cmdmysql.Parameters.Add("@p_mode", MySqlDbType.VarChar).Value = words[5];
    cmdmysql.Parameters.Add("@p_status", MySqlDbType.VarChar).Value = words[6];
    cmdmysql.Parameters.Add("@p_description", MySqlDbType.Double).Value = words[7];
    cmdmysql.Parameters.Add("@p_id", MySqlDbType.Double).Direction = System.Data.ParameterDirection.Output;
}
不要使用循环

if(words.Length==8)
{
    cmdmysql.Parameters.Add("@_maxvalue", MySqlDbType.Double).Value = words[0];
    cmdmysql.Parameters.Add("@p_userid", MySqlDbType.Double).Value = words[1];
    cmdmysql.Parameters.Add("@p_templateid", MySqlDbType.Double).Value = words[2];
    cmdmysql.Parameters.Add("@p_resultid", MySqlDbType.Double).Value = words[3];
    cmdmysql.Parameters.Add("@p_duration", MySqlDbType.Decimal).Value = words[4];
    cmdmysql.Parameters.Add("@p_mode", MySqlDbType.VarChar).Value = words[5];
    cmdmysql.Parameters.Add("@p_status", MySqlDbType.VarChar).Value = words[6];
    cmdmysql.Parameters.Add("@p_description", MySqlDbType.Double).Value = words[7];
    cmdmysql.Parameters.Add("@p_id", MySqlDbType.Double).Direction = System.Data.ParameterDirection.Output;
}

根据您使用的.NET版本,我将更改参数。Add to Parameters.AddWithValue.Add已被弃用

cmdmysql.Parameters.AddWithValue("@_maxvalue", words[0]); 

如果您尝试插入null值,我唯一看不到您处理的是DBNULL.Value。。查看它

根据您使用的.NET版本,我将更改参数。Add to Parameters.AddWithValue.Add已被弃用

cmdmysql.Parameters.AddWithValue("@_maxvalue", words[0]); 

如果您尝试插入null值,我唯一看不到您处理的是DBNULL.Value。。查看它

它现在正在工作。。。thnx。。。关于“@_maxvalue”,MySqlDbType.Double).Value的类型转换还有一个问题,它是双值。我正在进行类型转换,但它不允许我将null放在表中相同字段maxvalue可为null的位置。它现在正在工作。。。thnx。。。关于“@_maxvalue”,MySqlDbType.Double).Value的类型转换还有一个问题,它是双值。我正在进行类型转换,但它不允许我在表中相同字段maxvalue可以为null的地方设置null。这就是为什么您仍然需要检查以备万一。。DBNULL是一个值,但如果您始终确定不会插入任何空数据值。。那就别担心了。。但是数据从来都不是静态的,即使你不改变它,它也总是会改变的。这就是为什么你仍然需要检查以防万一。。DBNULL是一个值,但如果您始终确定不会插入任何空数据值。。那就别担心了。。但数据从来都不是静态的,即使您不进行更改,它也会随时发生更改。。