SQL语句错误“必须声明标量变量@t_p”

时间:2014-11-14 16:54:04

标签: c# sql sql-server parameters

我想在我的数据库中添加一些记录,但我总是遇到这个恼人的错误:

  

必须声明标量变量@t_p

stackoverflow上这个错误的给定答案无法帮助我解决问题。

string query = "INSERT INTO tbl_typ (name, [t-pass], [t-agg], [l-pass], [l-agg], b_typ, alter, [v-str], str, nor, wea, be_msg) VALUES (@sname, @t_p, @t_a, @l_p, @l_a, @btype, @alt, @v_s, @s, @n, @w, @b) ";

 using (SqlCommand cmd2 = new SqlCommand(query,con))
 {
     cmd2.Parameters.Add("@name", SqlDbType.NChar, 20).Value = S_Name.Substring(4);
     string resultString = Regex.Match(S_Name, @"\d+").Value;
     int tb_absender = Int32.Parse(resultString) + 1;

     for (int i = 0; i <= Spieler_Daten.Count; i += 5 )
     {
         if (Spieler_Daten.Count < i)
         {
             if (Spieler_Daten[i] == tb_absender)
             {
                 if (Spieler_Daten[i + 1] == 1)
                 {
                     cmd2.Parameters.Add("@t_p", SqlDbType.Bit).Value = 1;
                     cmd2.Parameters.Add("@t_a", SqlDbType.Bit).Value = 0;
                     cmd2.Parameters.Add("@l_p", SqlDbType.Bit).Value = 0;
                     cmd2.Parameters.Add("@l_a", SqlDbType.Bit).Value = 0;
                 }

                 if (Spieler_Daten[i + 2] == 2)
                 {
                     cmd2.Parameters.Add("@btype", SqlDbType.NChar, 20).Value = "viel";
                 }

                 if (Spieler_Daten[i + 3] == 1)
                 {
                     cmd2.Parameters.Add("@alt", SqlDbType.Bit).Value = 1;
                 }

                 if (Spieler_Daten[i + 3] == 0)
                 {
                     cmd2.Parameters.Add("@alt", SqlDbType.Bit).Value = 0;
                 }

                 if (Spieler_Daten[i + 4] == 1)//Steht für sehr stark
                 {
                     cmd2.Parameters.Add("@v_s", SqlDbType.Bit).Value = 1;
                     cmd2.Parameters.Add("@s", SqlDbType.Bit).Value = 0;
                     cmd2.Parameters.Add("@n", SqlDbType.Bit).Value = 0;
                     cmd2.Parameters.Add("@w", SqlDbType.Bit).Value = 0;
                 }

                 if (Spieler_Bemerkung.Contains(tb_absender.ToString()))
                 {
                     int position_bemerkung = Spieler_Bemerkung.IndexOf(tb_absender.ToString()) + 1;
                     cmd2.Parameters.Add("@b", SqlDbType.Text).Value = Spieler_Bemerkung.ElementAt(position_bemerkung);
                 }
            }
        }
        else
        { 
             break; 
        }
    }

    try
    {
        cmd2.ExecuteNonQuery();
        MessageBox.Show("Erfolgreich hinzugefügt: " + Spieler );
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }
}

非常感谢任何帮助!

0 个答案:

没有答案