必须声明标量变量“@GenName”

Must declare the scalar variable "@GenName"

我在尝试 运行 下面的代码时遇到此错误。对我做错了什么有任何见解吗?我对此很陌生,并且想让它工作得很糟糕。到目前为止,在我提出的上一个问题中,我从该站点获得的帮助为零。但是在放弃 Whosebug

之前决定再给这个论坛一个机会
protected void SaveButton_Click(object sender, EventArgs e)
{
    SqlConnection myConnection =
    new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=TESTdatabase;Integrated Security=True");
    SqlCommand myCommand = new SqlCommand(
    "INSERT into tblGenerator (GeneratorName, GeneratorAddress, GeneratorCity, GeneratorState, GeneratorZip, GeneratorPhone, GeneratorContact, GeneratorEPAID)" +
    "VALUES (@GenName, @GenAdd, @GenCity, @GenState, @GenZip, @GenPhone, @GenContact, @GenEPAID), myConnection");
    myCommand.Parameters.AddWithValue("@GeneratorName", GenName.Text);
    myCommand.Parameters.AddWithValue("@GeneratorAddress", GenAdd.Text);
    myCommand.Parameters.AddWithValue("@GeneratorCity", GenCity.Text);
    myCommand.Parameters.AddWithValue("@GeneratorState", GenState.Text);
    myCommand.Parameters.AddWithValue("@GeneratorZip", GenZip.Text);
    myCommand.Parameters.AddWithValue("@GeneratorPhone", GenPhone.Text);
    myCommand.Parameters.AddWithValue("@GeneratorContact", GenContact.Text);
    myCommand.Parameters.AddWithValue("@GeneratorEPAID", GenEPAID.Text);            

    myConnection.Open();
    myCommand.Connection = myConnection;
    myCommand.ExecuteNonQuery();
    myConnection.Close();
}

首先,Whosebug 很有帮助 :) 不要放弃这个平台。

现在回答您的问题:

您的 SQL 语句需要的参数是:

(@GenName, @GenAdd, @GenCity, @GenState, @GenZip, @GenPhone, @GenContact, @GenEPAID)

虽然您稍后为它们分配了不同的名称。

应该是:

    myCommand.Parameters.AddWithValue("@GenName", GenName.Text);
    myCommand.Parameters.AddWithValue("@GenAdd", GenAdd.Text);
    myCommand.Parameters.AddWithValue("@GenCity", GenCity.Text);
    myCommand.Parameters.AddWithValue("@GenState", GenState.Text);
    myCommand.Parameters.AddWithValue("@GenZip", GenZip.Text);
    myCommand.Parameters.AddWithValue("@GenPhone", GenPhone.Text);
    myCommand.Parameters.AddWithValue("@GenContact", GenContact.Text);
    myCommand.Parameters.AddWithValue("@GenEPAID", GenEPAID.Text);

使用 @parameter 时,您必须为具有相同确切名称的参数赋值。