使用 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 表的主要内容,如果未能解决你的问题,请参考以下文章