[英]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.