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

时间:2019-01-19 20:45:28

标签: c# ado.net sqlconnection

尝试运行以下代码时出现此错误。对我在做什么错有任何见解吗?我对此很陌生,并且想让它正常工作。到目前为止,在我之前提出的问题中,我从该站点获得的帮助为零。但是决定在放弃stackoverflow之前再给这个论坛一个机会

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();
}

1 个答案:

答案 0 :(得分:1)

首先,Stackoverflow非常有用:)不要放弃这个平台。

现在提出您的问题:

您的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时,必须为具有相同确切名称的参数分配一个值。