C#SQL create table如果它还不存在

时间:2010-05-27 17:39:23

标签: c# sql

嘿,我试图在我的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();

6 个答案:

答案 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

在您的代码中,= FALSENOT关键字在哪里?

答案 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();

}

http://www.mssqltips.com/tip.asp?tip=1826

答案 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 = ''

应告诉您表格是否存在