Wie Sie schreiben, die update-Abfrage zum update zwei Tabellen mit SQL-Datenquelle?
Ist es möglich, update zwei Tabellen mithilfe der SQL-Datenquelle und ASP.NET Grid-Ansicht? Ich habe Folgendes SQL Query für die Select-Anweisung.
SELECT
tbl_user_login.ID, tbl_user_login.UserID,
tbl_user_login.Pass, tbl_user_login.Enabled,
tbl_user_login.Permission, tbl_user_login.Rank,
tbl_user_profile.ID AS Expr1, tbl_user_profile.FName,
tbl_user_profile.LName, tbl_user_profile.Phone,
tbl_user_profile.Email1, tbl_user_profile.Email2
FROM
tbl_user_login
INNER JOIN
tbl_user_profile ON tbl_user_login.ID = tbl_user_profile.ID
Aber ich habe keine Ahnung, wie Schreibe ich das update-und delete-Anweisung im SQL-Datenquelle
UPDATE
Also schrieb ich die Prozedur speichern.
CREATE PROCEDURE UpdateTwoTable
(
@ID int,
@UserID varchar(10),
@Pass varchar(50),
@Enabled int,
@Permission int,
@Rank int,
@FName varchar(50),
@LName varchar(50),
@Phone varchar(50),
@Email1 varchar(50),
@Email2 varchar(50)
) AS
BEGIN TRANSACTION
UPDATE tbl_user_login SET UserID = @UserID, Pass = @Pass, Enabled = @Enabled, Permission = @Permission, Rank = @Rank WHERE ID = @ID
IF @@ERROR <> 0
BEGIN
ROLLBACK
RETURN
END
UPDATE tbl_user_profile SET FName = @FName, LName = @LName, Phone = @Phone, Email1 = @Email1, Email2 = @Email2 WHERE ID = @ID
IF @@ERROR <> 0
BEGIN
ROLLBACK
RETURN
END
COMMIT
Aber ich bekomme die Procedure or function UpdateTwoTable has too many arguments specified.
UPDATE
Ich diese Anleitung befolgt und das problem ist jetzt gelöst. Vielen Dank an alle die geholfen haben!
Unten ist mein SQL-Datenquelle.
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DBConnString %>"
SelectCommand="SELECT tbl_user_login.ID, tbl_user_login.UserID, tbl_user_login.Pass, tbl_user_login.Enabled, tbl_user_login.Permission, tbl_user_login.Rank, tbl_user_profile.ID AS Expr1, tbl_user_profile.FName,
tbl_user_profile.LName, tbl_user_profile.Phone, tbl_user_profile.Email1, tbl_user_profile.Email2 FROM tbl_user_login INNER JOIN tbl_user_profile ON tbl_user_login.ID = tbl_user_profile.ID"
UpdateCommand="UpdateTwoTable" UpdateCommandType="StoredProcedure"
OldValuesParameterFormatString="Original_{0}">
<UpdateParameters>
<asp:Parameter Name="ID" />
<asp:Parameter Name="UserID"/>
<asp:Parameter Name="Pass"/>
<asp:Parameter Name="Enabled"/>
<asp:Parameter Name="Permission"/>
<asp:Parameter Name="Rank"/>
<asp:Parameter Name="FName"/>
<asp:Parameter Name="LName"/>
<asp:Parameter Name="Phone"/>
<asp:Parameter Name="Email1"/>
<asp:Parameter Name="Email2"/>
</UpdateParameters>
</asp:SqlDataSource>
- Bitte senden Sie mir die Lösung. der oben angegebene link nicht funktioniert. Ich habe das gleiche problem und nicht die Lösung.
stackoverflow.com/questions/45004869/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es ist möglich. Hier ist, wie es zu tun in einer sicheren Weise:
Auf diese Weise brauchen Sie nicht zu besorgt sein, falls Sie eine Fehlermeldung, ausgelöst durch eine andere von den updates. Das bedeutet: Wenn einer von Ihnen schlägt fehl, wird der gesamte Vorgang abgebrochen wird und Sie werden keine inkonsistenten Daten in die DB.
Mehr über die Verwendung von
Transactions
hier: http://www.4guysfromrolla.com/webtech/080305-1.shtmlDen grundlegenden DELETE-Anweisung ist:
DELETE FROM <tablename> WHERE <condition>
Procedure or function UpdateTwoTable has too many arguments specified.
<UpdateParameters>
in Ihrem GridView-markup@ID, @Pass, Email
Können Sie schreiben, die mehrere sql-Befehle in einer einzigen sproc, wie ich schon oben. Erweitern Sie updates, wie gebraucht. Löscht die gleiche Weise funktionieren...
Funktioniert es also nicht?
RowUpdated
undRowDeleted
und vielleicht finden Sie etwas nützlich. Nutzt du Transaktionen?