SSMS
 sql >> Datenbank >  >> Database Tools >> SSMS

Anzeigen der Zeilenanzahl vom SQL-Server zum Programm

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);
        }
    }