[英]Creating new sql server table with c#
我有这个代码来创建新的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;
}
}
您为表及其主键使用相同的名称。 请改为"CONSTRAINT ['pk_" + TName + "'] PRIMARY KEY CLUSTERED "
。
该错误消息似乎与表的名称无关。 它似乎与约束的名称有关。 看起来您正在命名一个约束'beso',并且该名称中的另一个对象已经存在于您的数据库中。
您也可以像这样使用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特定的功能,因为它以可移植的方式支持许多平台。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.