Error when updating with stored procedure

Error when updating with stored procedure

Old forum URL: forums.lhotka.net/forums/t/1367.aspx


SQueek posted on Monday, October 02, 2006

Could someone please point me to the right direction. I was able to use a root Business Object to save data sucessfully but ain't getting it to update it's data in the database. I get following exception

TargetInvocationException

 

e.InnerException.Message

 

Incorrect syntax near 'updateKunde'.

 

 

e.InnerException.StackTrace:

 

   bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)

   bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

   bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)

   bei System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

   bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)

   bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)

   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)

   bei System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)

   bei System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

   bei PassureBLL.Kunde.DoUpdate(SqlCommand cm) in C:\Eigene Dateien\Visual Studio 2005\Projects\PassureSQL\PassureBLL\Kunde.cs:Zeile 789.

   bei PassureBLL.Kunde.DataPortal_Update() in C:\Eigene Dateien\Visual Studio 2005\Projects\PassureSQL\PassureBLL\Kunde.cs:Zeile 804.

 

when I call the stored procedure directly it updates fine?

 

////////////////////////////////////////////////////////////

 

ALTER PROCEDURE dbo.updateKunde

(

@Nachname nvarchar,

@Vorname nvarchar,

@Geburtsdatum varchar,

@EmailAdresse nvarchar,

@id int

)

AS

UPDATE Kunde

SET Nachname = @Nachname, Vorname = @Vorname, Geburtsdatum = @Geburtsdatum, EmailAdresse = @EmailAdresse

WHERE (KundeID = @id)

RETURN

////////////////////////////////////////////////////////////

 

[Transactional(Csla.TransactionalTypes.TransactionScope)]

protected override void DataPortal_Update()

{

if (base.IsDirty)

{

using (SqlConnection cn = new SqlConnection(Database.PassureSQLConnection))

{

cn.Open();

using (SqlCommand cm = cn.CreateCommand())

{

cm.CommandText = "updateKunde";

DoUpdate(cm);

}

}

}

// update child objects

_kundeAdresse.Update(this._kundeAdresse);

_kundeArbeistvorbereitungsTermin.Update(this._kundeArbeistvorbereitungsTermin);

_kundeKundenTermin.Update(this._kundeKundenTermin);

_kundeVerwaltungTermin.Update(this._kundeVerwaltungTermin);

}

 

private void DoUpdate(SqlCommand cm)

{

//cm.Parameters.AddWithValue("@Beruf", _Beruf);

cm.Parameters.AddWithValue("@EmailAdresse", _EmailAdressePrivat);

cm.Parameters.AddWithValue("@Geburtsdatum", _Geburtsdatum.Text);

cm.Parameters.AddWithValue("@Vorname", _Vorname);

cm.Parameters.AddWithValue("@Nachname", _Name);

cm.Parameters.AddWithValue("@id", _KundeID);

cm.ExecuteNonQuery();

}

 

I hope you can help me, since I am lost right now..

 

Best Greetings

 

Mario Allegro

Brian Criswell replied on Monday, October 02, 2006

You are forgetting to set cm.CommandType = CommandType.StoredProcedure;.

SQueek replied on Monday, October 02, 2006

Thanks a lot for having made my day shine again. I looked several times overe the code and every time I missed this point. Thanks!!!!

 

Big Smile [:D]

Copyright (c) Marimer LLC