Wenn Sie mehrere Abfragen in Ihrer Skriptdatei haben, sollten Sie Ihr Skript mit @rowsAffected
erweitern Variable, wie in T-SQL unten gezeigt. Dann müssen Sie in Ihrem C#-Code ExecuteScalar aufrufen um die detaillierten Zeilen zu erhalten, die von Ihrem Skript betroffen sind.
**Script file with @rowsAffected variable logic**
--add following variable at start of your script
DECLARE @rowsAffected VARCHAR(2000);
INSERT INTO [dbo].[Products] ([ProductName]) VALUES ('sun1'),('sun2'),('sun3');
--after each query that you want to track, include the following line
SET @rowsAffected = 'Products : ' + CAST(@@rowcount AS varchar(20));
UPDATE [dbo].[newTable] SET [ColB] = 'b' ,[ColC] = 'd',[ColD] = 'e' ,[ColE] = 'f' WHERE ColA='a';
--after each query that you want to track, include the following line
SET @rowsAffected = @rowsAffected + ', newTable : ' + CAST(@@rowcount AS varchar(20));
-- add the query below at end of your script
SELECT @rowsAffected;
Sie müssen den Text aus Ihrer Skriptdatei lesen, wie Sie es in Ihrem Code tun, und dann ein Befehlsobjekt erstellen, indem Sie den aus der Datei gelesenen Text verwenden, bevor Sie den Code im folgenden Snippet ausführen.
C#-Code zum Ausführen des obigen Skripts
string rowsAffected =(string) command.ExecuteScalar();
//you can now use rowsAffected variable in any way you like
//it will contain something like Table1 : 4, Table2 : 6
Detaillierter C#-Code unter Verwendung Ihres Originalcodes
using (SqlConnection con = new SqlConnection(constr))
{
FileInfo file = new FileInfo(DIRECTORY OF THE SCRIPT);
string script = file.OpenText().ReadToEnd();
SqlCommand command = new SqlCommand(script, con);
command.CommandType = CommandType.Text;
try
{
con.Open();
string rowsAffected =(string) command.ExecuteScalar();
Display( rowsAffected);
con.Close();
}
catch (Exception ex)
{
con.Close();
Display(ex.Message);
}
}