Avatar billede m_smiszek Nybegynder
20. juni 2007 - 12:25 Der er 9 kommentarer og
1 løsning

Parameterized Query

Hej Alle,

Jeg kæmper med at få ASP.NET til at update i min sql database.

Her er koden:

Dim comm As New SqlCommand("UPDATE sider SET indhold='@fckeditoroutput' WHERE ID=@side", conn)

        comm.Parameters.AddWithValue("@side", Request.Headers("side"))



        Try
            conn.Open()



        Catch ex As Exception
            TextBox1.Text = "Fejl i sql statements"
        Finally
            'TextBox1.Text = "Nu er den fin"
            comm.ExecuteNonQuery()
            conn.Close()

        End Try

Og her er fejlen, Jeg kan ikke rigtigt se mig ud af hvad jeg gør galt.

[SqlException (0x80131904): Parameterized Query '(@side nvarchar(4000))UPDATE sider SET indhold='@fckeditoroutput' expects parameter @side, which was not supplied.]
  System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +857450
  System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +735062
  System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +188
  System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1838
  System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +149
  System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +886
  System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +132
  System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +415
  System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +135
  admin.Button1_Click(Object sender, EventArgs e) in D:\Data\Websites\smiszek.dk\admin.aspx.vb:34
  System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
  System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
Avatar billede dr_chaos Nybegynder
20. juni 2007 - 13:17 #1
prøv med:
Dim comm As New SqlCommand("UPDATE sider SET indhold='@fckeditoroutput' WHERE ID=@side", conn)
comm.Parameters.AddWithValue("@fckeditoroutput", "hej")
        comm.Parameters.AddWithValue("@side", Request.Headers("side"))
Avatar billede lifo Nybegynder
20. juni 2007 - 13:18 #2
ser fornuftigt ud
måske er det fordi at der ikke er noget i den side header

men du skal i hvert fald aldrig kalde Execute... inde i din finally
prøv med
Dim comm As New SqlCommand("UPDATE sider SET indhold='@fckeditoroutput' WHERE ID=@side", conn)

        comm.Parameters.AddWithValue("@side", 1)

Try
  conn.Open()
  comm.ExecuteNonQuery()
  'TextBox1.Text = "Nu er den fin"
Catch ex As Exception
  TextBox1.Text = "Fejl i sql statements"
Finally
  conn.Close()

        End Try
Avatar billede lifo Nybegynder
20. juni 2007 - 13:19 #3
dr_chaos
hans @fckeditoroutput er inde i ' så det er bare en streng
Avatar billede dr_chaos Nybegynder
20. juni 2007 - 13:20 #4
Ja det så jeg lige.
Er ikke helt vågen.
Tror også at fejlen er som du skriver.
Avatar billede kalp Novice
20. juni 2007 - 13:49 #5
man ved aldrig her på E... kan da godt være spørger netop er ude efter det her

Dim comm As New SqlCommand("UPDATE sider SET indhold=@fckeditoroutput WHERE ID=@side", conn)
comm.Parameters.AddWithValue("@fckeditoroutput", "hej")
comm.Parameters.AddWithValue("@side", Request.Headers("side").ToString())

hvilket bare kræver at man lige fjerner '' rundt om den ene parameter(er gjort her)..
-kalder desuden ToString på Headers()
Da det er VB kan det godt være ToString skal kaldes lidt anderledes:)

og selvfølgelig flytte Execute som lifo skriver så den Exception bliver fanget korrekt.
Avatar billede kalp Novice
20. juni 2007 - 13:50 #6
(hvis @side er den eneste parameter så prøv stadig at kalde ToString på Headers)
Avatar billede m_smiszek Nybegynder
20. juni 2007 - 13:51 #7
Hej i 2, i har ret, der var intet i min header.

Fik løst problemet med en Request("side") istedet for en Request.Headers("side")

Sender i mig lige begge et svar så i kan få jeres point.

dr_chaos, jeg har en gammel point gæld til dig på http://www.eksperten.dk/spm/780871 - send mig lige et svar så du kan få point på denne også.
Avatar billede dr_chaos Nybegynder
20. juni 2007 - 14:04 #8
Jeg skal ikke have nogen points for det her. Da mit svar ikke var det rigtige.
Pointene skal gå til lifo :)
Avatar billede lifo Nybegynder
20. juni 2007 - 14:17 #9
Svar
Avatar billede m_smiszek Nybegynder
20. juni 2007 - 14:24 #10
Tak for hjælpen gutter.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester