【问题标题】:Creating new sql server table with c#使用 c# 创建新的 sql server 表
【发布时间】: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 用于显示代码和确切的错误消息。这应该是如何在这里提出问题的主要示例。

标签: c# sql-server winforms


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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-02
        • 2010-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多