Anon56890 Anon56890 - 7 months ago 16
SQL Question

ASPX Write to SQL Datatypes

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, Action
1 wrapCloseInAction) at
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection, Action
1 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, TaskCompletionSource
1 completion, Int32 timeout, Task& task,
Boolean asyncWrite) at
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1
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();
}
}

Answer

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