嘿,我试图在我的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();
答案 0 :(得分:9)
如果表存在,则SQL正在创建表,如果不存在,则表示不创建表。
将SQL更改为IF NOT EXISTS
。
答案 1 :(得分:5)
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
在您的代码中,= FALSE
或NOT
关键字在哪里?
答案 2 :(得分:4)
您还可以查看使用Microsoft SMO对象。我更喜欢使用SMO对象,让他们尽可能为我做工作,而不是通过代码执行SQL文本。
使用SMO Database对象,您可以执行以下操作。
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();
}
答案 3 :(得分:2)
您可能正在默认架构中创建表(通常为dbo
。)
指定全名,例如:
CREATE TABLE RX_CMMData.Import
答案 4 :(得分:0)
某些DBMS允许您在SQL中执行CREATE TABLE IF NOT EXISTS <tablename>
。我会检查你的DBMS的语法。
答案 5 :(得分:0)
如果您使用的是Oracle,可以尝试
select count(*) from user_tables
where table_name = ''
应告诉您表格是否存在