2011-01-03 4 views
2

Ich habe versucht, eine gespeicherte Prozedur zu erstellen, die Werte aus meinem Programm und fügt es in bestimmten Spalten in einer Tabelle ein. Ich bekomme immer eine falsche Syntax in der gespeicherten Prozedur, kann aber nicht herausfinden, warum? Der Code aus dem Programm:sql Server gespeicherte Prozedur, um Datensätze zu aktualisieren

  commandObj.CommandText = "sp_insert_profileDetails" 

      commandObj.Parameters.Clear() 

      Dim m_param As SqlParameter 

      m_param = commandObj.Parameters.Add("@authorId", SqlDbType.NVarChar, 100) 
      m_param.Direction = ParameterDirection.Input 
      m_param.Value = foundProfiles.Item(i) 


      m_param = commandObj.Parameters.Add("@age", SqlDbType.NVarChar, 50) 
      m_param.Direction = ParameterDirection.Input 
      m_param.Value = faceProfileAge.Item(i) 

      m_param = commandObj.Parameters.Add("@gender", SqlDbType.NVarChar, 50) 
      m_param.Direction = ParameterDirection.Input 
      m_param.Value = faceProfileSex.Item(i) 

      m_param = commandObj.Parameters.Add("@locale", SqlDbType.NVarChar, 50) 
      m_param.Direction = ParameterDirection.Input 
      m_param.Value = faceProfileLocation.Item(i) 

      m_param = commandObj.Parameters.Add("@pic", SqlDbType.NVarChar, 100) 
      m_param.Direction = ParameterDirection.Input 
      m_param.Value = faceProfilePic.Item(i) 

      Dim recordsAffected As Integer = commandObj.ExecuteNonQuery 
      Return recordsAffected 



ALTER procedure [dbo].[sp_insert_profileDetails] 
@authorId nvarchar(100), 
@age nvarchar(50), 
@gender nvarchar(50), 
@locale nvarchar(50), 
@pic nvarchar(100) 

AS 
    Begin 
    set nocount on 
    update [dbo].ProfileFeed 
    set [age] = @age, 
     [sex] = @gender, 
     [locale] = @locale, 
     [pic] = @pic 
    where 
     [authorId] = @authorId 
    end 

Jede mögliche Unterstützung geschätzt?

+2

Was ist der Fehler? Kannst du es hier einfügen? –

+5

Nicht verwandt mit Ihrem Problem, aber Präfix Ihre sprocs mit sp_ wird von MS abgeraten: http://msdn.microsoft.com/en-us/library/ms190669.aspx –

+1

Ein heikeler Punkt, es sei denn, Sie wissen genau, was Sie tun und warum, möchten Sie nicht wirklich Ihre Prozeduren mit "sp_" voranstellen. SQL führt eine zusätzliche Verarbeitung für alle sp_-Prozeduren durch, und dies könnte Sie im Laufe der Zeit stolpern. (Detaillierte Erklärung finden Sie in BOL.) –

Antwort

5

ich ein paar Zeilen Code fehlt sicher zu sein, aber ....

Haben Sie angeben, dass die commandObj.CommandType System.Data.CommandType.StoredProcedure ist?

Wenn Sie vergessen, dies zu setzen, wird .NET als System.Data.CommandType.Text standardmäßig behandeln, und die Datenbank wird einen falschen Syntaxfehler werfen ..

+0

Ich habe vergessen, das zu tun, lassen Sie mich es noch einmal versuchen ... danke..wird zurück – vbNewbie

+0

Mein Vergnügen. Freut mich, Ihnen behilflich zu sein. – David

0

Ich sehe nicht, wo du bist tatsächlich irgendwelche Datensätze in die Datenbank einfügen.

Die gespeicherte Prozedur lautet:

update [dbo].ProfileFeed 
    set [age] = @age, 
     [sex] = @gender, 
     [locale] = @locale, 
     [pic] = @pic 
    where 
     [authorId] = @authorId 
    end 

Doch die SP [dbo].[sp_insert_profileDetails]

benannt Meinten Sie schreiben "insert into [dbo].ProfileFeed" anstelle von "update"?

+0

Ich versuche nicht, neue Datensätze hinzuzufügen, ich versuche, vorhandene Datensatzspalten zu aktualisieren. Wo also die authorId übereinstimmt, müssen diese Spalten aktualisiert werden. – vbNewbie

Verwandte Themen