使用 c# 创建新的 sql server 表

Posted

技术标签:

【中文标题】使用 c# 创建新的 sql server 表【英文标题】:Creating new sql server table with c# 【发布时间】:2011-05-31 06:36:03 【问题描述】:

我有这段代码来创建新的 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;
        
    

【问题讨论】:

您的“折扣”列命名错误,除非您打算将其命名为“折扣”。在英文中,“折扣”中只有一个“c”。 顺便说一句,+1 用于显示代码和确切的错误消息。这应该是如何在这里提出问题的主要示例。 【参考方案1】:

您对表及其主键使用相同的名称。请改用"CONSTRAINT ['pk_" + TName + "'] PRIMARY KEY CLUSTERED "

【讨论】:

【参考方案2】:

错误信息似乎与表名无关。它似乎与约束的名称有关。看起来您正在命名一个约束“beso”,并且您的数据库中已经存在另一个同名的对象。

【讨论】:

【参考方案3】:

您也可以像这样使用Mig#,而不是使用 SQL 语法:

        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 的功能,因为它以可移植的方式支持许多平台。

【讨论】:

以上是关于使用 c# 创建新的 sql server 表的主要内容,如果未能解决你的问题,请参考以下文章

C# - 以编程方式创建 SQL Server 表

从 C# 检索 SQL Server 扩展属性

如何查看sql server中代码创建的临时表?

如何使用 c# 监控 SQL Server 表更改?

如何使用 c# 监控 SQL Server 表更改?

如何将地理批量插入新的 sql server 2008 表