2016-04-20 2 views
0

Ich muss wissen, wie man einen einzelnen Datensatz von einer SQL-Server-2012-Datentabelle mit C# Datenreader und einer gespeicherten Prozedur aktualisiert. Ich habe bereits eine gespeicherte Prozedur, die es mir ermöglicht, einen einzelnen Datensatz in meiner Datentabelle zu aktualisieren. Ich kann einfach nicht herausfinden, wie man einen C# Datenleser verwendet, um einen Datensatz in der Datentabelle zu aktualisieren. Wenn ich zum Beispiel sage, dass ich eine Studentin in einer College-Klasse habe, die ich unterrichte, und sie heiratet, müsste ich ihren Datensatz aus meiner Studenteninformationsdatei auswählen und ihren Nachnamen in ihren neuen Ehenamen ändern. Vielen Dank im Voraus für Ihre Hilfe.Wie aktualisiere ich einen einzelnen Datensatz von einem spl Server 2012 Datatable mit einem C# Datenleser und einer gespeicherten Prozedur?

+0

Warum sagen Sie ausdrücklich, dass Sie einen Datenreader verwenden müssen? – Crowcoder

+0

. Net Datenleser Klasse - wie der Name schon sagt - ist zum Lesen von Daten, nicht zu aktualisieren. Es ist also kein Wunder, dass Sie nicht herausfinden konnten, wie Sie damit Daten aktualisieren können. Siehe https://msdn.microsoft.com/en-us/library/ms254931(v=vs.110).aspx – Shadow

Antwort

1

Ein DataReader ist nicht verbunden, schreibgeschützt. Aus diesem Grund gibt es keine Methoden zum Aktualisieren seiner Werte.

Sie haben angegeben, dass Sie eine gespeicherte Prozedur zum Aktualisieren haben. Um das auszuführen, würden Sie SqlConnection und SqlCommand erstellen und Parameter hinzufügen, genau wie beim Ausführen des Befehls, der SqlDataReader generiert. Aber anstatt ExecuteReader() aufzurufen, würden Sie normalerweise ExecuteNonQuery() anrufen. Dies wird zum Ausführen einer Abfrage verwendet, die keine Ergebnisse zurückgibt. Es gibt die Anzahl der aktualisierten Zeilen zurück.

+0

Ich werde es versuchen. Danke für den Tipp Herr Hannen. Sehr geschätzt. – Anthony

0

Sie müssen DataReader nicht zum Aktualisieren eines Datensatzes in SQL Server verwenden. Daher gespeicherte Prozedur, die Sie gerade einen Parameter in der gespeicherten Prozedur deklarieren haben und einen Wert zu diesem Parameter in C# passieren etwa so:

CREATE PROCEDURE [dbo].[StoredProcedureName] 
    @SOMEPARAMETER AS VARCHAR(50) 
AS 
BEGIN 
    UPDATE tableName 
    SET ColumnFromTable = @SOMEPARAMETER 
    WHERE !--YourConditionGoesHere 
END 
GO 

Und in C#, um die Parameter zu übergeben tun es wie folgt aus:

using(SqlConnection con = new SqlConnection("connectionSTringHere") 
{ 
    SqlCommand cmd = new SqlCommand("StoredProcedureName",con); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.Add("@SOMEPARAMETER",SqlDbType.VarChar).Value = "SomeValue"; 
    cmd.ExecuteNonQuery(); 
} 
+0

Danke für das Beispiel und die ausführliche Erklärung Herr Borlagdan. Ich werde dein Beispiel als Anfang verwenden und sehen, wo es mich hinführt. – Anthony

+0

und nur für eine Verknüpfung, die Sie nicht im Internet finden würden. Wenn Sie SQL Server 2008 und höher verwenden, können Sie zum Objekt-Explorer gehen - dropdown Ihre Datenbank - gehen Sie zu Programmfähigkeiten mit der rechten Maustaste auf StoredProcedures Ordner und klicken Sie auf Neu Drücken Sie dann einfach STRG + UMSCHALTTASTE: D –

Verwandte Themen