我想在我的数据库中添加一些记录,但我总是遇到这个恼人的错误:
必须声明标量变量@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());
}
}
非常感谢任何帮助!