Создание новой таблицы SQL Server с C # - PullRequest
8 голосов
/ 27 декабря 2010

У меня есть этот код для создания новой таблицы SQL, когда я выполняю это, он показывает мне эту ошибку, которая на скриншоте.В моей БД есть не такая таблица.эта ошибка показывает любое имя таблицы.кто-нибудь может мне помочь?

public void Create(string TName, string ConString)
    {
        try
        {
            using (SqlCommand cmd = new SqlCommand("CREATE TABLE [dbo].['" + TName + "']("
                            + "[ID] [int] IDENTITY(1,1) NOT NULL,"
                            + "[DateTime] [date] NOT NULL,"
                            + "[BarCode] [nvarchar](max) NOT NULL,"
                            + "[ArtNumber] [nvarchar](max) NOT NULL,"
                            + "[ProductName] [nvarchar](50) NOT NULL,"
                            + "[Quantity] [int] NOT NULL,"
                            + "[SelfPrice] [decimal](18, 2) NOT NULL,"
                            + "[Price] [decimal](18, 2) NOT NULL,"
                            + "[Disccount] [int] NULL,"
                            + "[Comment] [nvarchar](max) NULL,"
                            + "CONSTRAINT ['" + TName + "'] PRIMARY KEY CLUSTERED "
                            + "("
                            + "[ID] ASC"
                            + ")WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]"
                            + ") ON [PRIMARY]", new SqlConnection(ConString)))
            {
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }
        catch (Exception)
        {

            throw;
        }
    }

alt text

Ответы [ 3 ]

5 голосов
/ 27 декабря 2010

Вы используете одно и то же имя для своей таблицы и ее первичный ключ.Попробуйте вместо "CONSTRAINT ['pk_" + TName + "'] PRIMARY KEY CLUSTERED ".

1 голос
/ 27 декабря 2010

Сообщение об ошибке, похоже, не связано с именем таблицы. Это похоже на название ограничения. Похоже, вы называете ограничение «beso», и другой объект с таким именем уже существует в вашей БД.

0 голосов
/ 23 декабря 2015

Вместо того, чтобы бороться с синтаксисом SQL, вы также можете использовать Mig # следующим образом:

        var schema = new DbSchema(ConnectionString, DbPlatform.SqlServer2014);
        schema.Alter(db => db.CreateTable(TName)
           .WithPrimaryKeyColumn("Id", DbType.Int32).AsIdentity()
           .WithNotNullableColumn("DateTime", DbType.Date)
           ...);

Единственным недостатком этого подхода является то, что Mig # не подходит для использования очень специфических функций SQL Server, поскольку он поддерживает многие платформы в переносном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...