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

Jak*_*key 1 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();
Run Code Online (Sandbox Code Playgroud)

Mar*_*idd 9

如果表存在,则SQL正在创建表,如果不存在,则表示不创建表.

将SQL更改为读取IF NOT EXISTS.


Fre*_*dou 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
Run Code Online (Sandbox Code Playgroud)

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


dre*_*f17 5

您还可以研究使用 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

  • 不同的笔划等等,但我发现编写 SQL 脚本比需要创建所有对象并设置属性(如示例代码中那样)要容易得多。 (2认同)