嘿,我试图在我的C#应用程序中添加一些逻辑,它将创建一个名为Import的表,如果它还不存在.这是我的代码,它似乎不起作用.
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText =
@"
IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'RX_CMMData' AND TABLE_NAME = 'Import'))
BEGIN
CREATE TABLE Import (
RowId integer PRIMARY KEY NOT NULL,
PartNumber varchar(200) NOT NULL,
CMMNumber varchar(200) NOT NULL,
Date varchar(200) NOT NULL,
FeatType varchar(200) NOT NULL,
FeatName varchar(200) NOT NULL,
Value varchar(200) NOT NULL,
Actual decimal,
Nominal decimal,
Dev decimal,
TolMin decimal,
TolPlus decimal,
OutOfTol decimal,
FileName varchar(200) NOT NULL
); END";
cmd.ExecuteNonQuery();
}
con.Close();
Run Code Online (Sandbox Code Playgroud)
SQL Server 2005下的语法是
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tablename]') AND type in (N'U'))
BEGIN
-- create
END
Run Code Online (Sandbox Code Playgroud)
在您的代码中,= FALSEor NOT关键字在哪里?
您还可以研究使用 Microsoft SMO 对象。我更喜欢使用 SMO 对象,并在可能的情况下让它们为我完成工作,而不是通过代码执行 SQL 文本。
使用 SMO 数据库对象,您可以执行以下操作。
Database db = myServer.Databases["MyDB"];
if (! db.Tables.Contains("NewTable"))
{
Table tbl = new Table(db, "NewTable");
Column col1 = new Column(tbl, "Column1", DataType.Varchar(10));
col1.Nullable = true;
tbl.Columns.Add(col1);
tbl.Create();
}
Run Code Online (Sandbox Code Playgroud)
http://www.mssqltips.com/tip.asp?tip=1826