System.Data.SqlClient.SqlCommand对象可以执行的T-SQL的局限性是什么?

| 我有一些类似这样的Transact-SQL,可以通过SqlCommand对象执行它,还是需要开始学习Sql管理对象?
BEGIN TRANSACTION
BEGIN TRY

    IF NOT EXISTS
    (
        SELECT * 
        FROM INFORMATION_SCHEMA.TABLES 
        WHERE TABLE_CATALOG = (SELECT DB_NAME())
        AND TABLE_NAME = \'SchemaVersion\'
    )
        BEGIN
            Print \'Migrating up...\'

            CREATE TABLE SchemaVersion (
                Id INT IDENTITY(1,1) NOT NULL,
                Version INT NOT NULL,
                CONSTRAINT PK_SchemaVersion PRIMARY KEY CLUSTERED (
                    Id ASC
                )
            )

            INSERT INTO SchemaVersion (Version) VALUES(1)

            PRINT \'Migrated from 0 to 1\'
        END
    ELSE IF (SELECT Version FROM SchemaVersion) = 1
        BEGIN
            Print \'Migrating down...\'

            DROP TABLE Dia_SchemaVersion

            PRINT \'Migrated from 1 to 0\'
        END
     ELSE
        PRINT \'Not migrating...\'

    COMMIT TRANSACTION;

END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION
END CATCH
    
已邀请:
是的,可以由ѭ1执行-最简单的方法是将其放入存储过程并执行。 你有什么问题? 至于学习SSMS,如果您在SQL Server上进行开发,那不是一个坏主意。     
只需将其包装在存储过程中,然后使用SqlCommand \的.ExecuteNonQuery()方法进行调用即可。您可以通过处理SqlConnection \的InfoMessage事件来“监听”来自.Net代码的打印消息。它还有助于将连接的FireInfoMessageEventOnUserErrors属性设置为true。     
首先,您需要了解ADO.NET以及对象如何工作。 连接 命令 交易 数据读取器 数据集 数据适配器 Command对象可以接受任何符合SQL(ANSI SQL)的查询。如果您要进行交易,那么我建议您处理交易 通过ADO.NET事务...这里有一些阅读 而是从命令对象调用存储过程,而不是将其作为SQL的一部分传递。     

要回复问题请先登录注册