2
votes

I want to write to my SQL databse, but getting this specific error:

System.Data.SqlClient.SqlException (0x80131904): Must declare the scalar variable "@Aantalpaginas". at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at project.NEWANDWRITE.btnOpslaan_Click(Object sender, EventArgs e) in Error Number:137,State:2,Class:15

This are my datatypes in SQL: http://imgur.com/qj2oSsb

I think i need to convert the text in the txtPaginas.text to an int right?

if (Page.IsValid)
        {

            string connString = WebConfigurationManager.ConnectionStrings["csBoeken"].ConnectionString;
            SqlConnection myConnection = new SqlConnection(connString);

            string sqlWegschrijven = "INSERT INTO TabelBoeken (ISBN, Titel, Auteur, Uitgever, JaarUitgifte, Aantalpaginas, Aanschafprijs) VALUES (@ISBN, @Titel, @Auteur, @Uitgever, @JaarUitgifte, @Aantalpaginas, @Aanschafprijs)";

            SqlCommand cmdSchrijfNaarDB = new SqlCommand(sqlWegschrijven, myConnection);

            cmdSchrijfNaarDB.Parameters.AddWithValue("@Titel", txtTitel.Text);
            cmdSchrijfNaarDB.Parameters.AddWithValue("@Auteur", txtAuteur.Text);
            cmdSchrijfNaarDB.Parameters.AddWithValue("@ISBN", txtISBN.Text);
            cmdSchrijfNaarDB.Parameters.AddWithValue("@Uitgever", txtUitgever.Text);
            cmdSchrijfNaarDB.Parameters.AddWithValue("@JaarUitgifte", txtJaar.Text);
            cmdSchrijfNaarDB.Parameters.AddWithValue("@Aantalpagina", txtPagina.Text);
            cmdSchrijfNaarDB.Parameters.AddWithValue("@Aanschafprijs", txtPrijs.Text);

            try
            {
                myConnection.Open();
                cmdSchrijfNaarDB.ExecuteNonQuery();
            }
            catch (Exception error)
            {
                lblError.Text = error.ToString();
            }
            finally
            {
                myConnection.Close();
            }
        }
1

1 Answers

2
votes

You have a spelling error on parameter #6

if (Page.IsValid)
    {

        string connString = WebConfigurationManager.ConnectionStrings["csBoeken"].ConnectionString;
        SqlConnection myConnection = new SqlConnection(connString);

        string sqlWegschrijven = "INSERT INTO TabelBoeken (ISBN, Titel, Auteur, Uitgever, JaarUitgifte, Aantalpaginas, Aanschafprijs) VALUES (@ISBN, @Titel, @Auteur, @Uitgever, @JaarUitgifte, @Aantalpaginas, @Aanschafprijs)";

        SqlCommand cmdSchrijfNaarDB = new SqlCommand(sqlWegschrijven, myConnection);

        cmdSchrijfNaarDB.Parameters.AddWithValue("@Titel", txtTitel.Text);
        cmdSchrijfNaarDB.Parameters.AddWithValue("@Auteur", txtAuteur.Text);
        cmdSchrijfNaarDB.Parameters.AddWithValue("@ISBN", txtISBN.Text);
        cmdSchrijfNaarDB.Parameters.AddWithValue("@Uitgever", txtUitgever.Text);
        cmdSchrijfNaarDB.Parameters.AddWithValue("@JaarUitgifte", txtJaar.Text);
        cmdSchrijfNaarDB.Parameters.AddWithValue("@Aantalpaginas", txtPagina.Text); // Correct spelling is @Aantalpaginas
        cmdSchrijfNaarDB.Parameters.AddWithValue("@Aanschafprijs", txtPrijs.Text);

        try
        {
            myConnection.Open();
            cmdSchrijfNaarDB.ExecuteNonQuery();
        }
        catch (Exception error)
        {
            lblError.Text = error.ToString();
        }
        finally
        {
            myConnection.Close();
        }
    }