2011-12-30 16 views
0

配列の値を使用して "cmdmysql.Parameters.Add"に値を挿入しようとしています。しかし、例外値は既に定義されています。以下は、私のコードです:配列を使用して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; 
} 

ので、例えば、私は言葉を使用して@p_maxvalueに値を挿入しようとした場合、[0]、それは例外@p_maxvalueがすでに定義されて生成します。 誰もがこれについて考えていますか?

答えて

0

は、私が唯一のものが表示されないこと

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

を廃止されましたあなたがnull値を挿入しようとするとDBNULL.Valueになります。それをチェックしてください。 Parameters.AddWithValue MSDN

+0

はい、それは私にヌル値..... –

+0

を入力することを許可しません。なぜなら、あなたはまだそれを確認する必要があるのです。DBNULLは値ですが、常にヌルデータ値挿入する..それを心配しないでください..しかし、データは決して静的ではなく、あなたがそれを変更しなくても常に変更の対象となります.. – MethodMan

1

問題はforeachループです。コマンドには、指定されたパラメータ名に対して1つの値しか含めることができませんが、単語コレクションに複数の単語がある場合、指定されたコードは同じパラメータ名を2回使用しようとします。

+0

その作業は今... thnx ... "@_maxvalue"、MySqlDbType.Doubleの型キャストに関するもう一つの懸念があります) .Valueはdouble値です。私は型キャストですが、テーブル内の同じフィールドのmaxvalueがヌル値の場合はnullを設定できません。 –

2

ループを使用しないでください。あなたは私がParameters.AddWithValue .AddにParameters.Addを変更します.NETで使用しているバージョンに応じて、

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; 
} 
関連する問題