SQL语句:
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create ...
else
update ...
GO

解决方案 »

  1.   

    如果是用oledbconnection连接数据源的话,可以用OleDbConnection.GetOleDbSchemaTable的方法获取数据库中的所有表。
      

  2.   

    MSDN上的例子
    以下示例返回数据库中的表的列表。[Visual Basic] 
    Public Function GetTables(conn As OleDbConnection) As DataTable
      conn.Open()
      Dim schemaTable As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
                                                              New Object() {Nothing, Nothing, Nothing, "TABLE"})
      conn.Close()
      Return schemaTable
    End Function
    [C#] 
    public DataTable GetTables(OleDbConnection conn)
    {
      conn.Open();
      DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
                                                       new object[] {null, null, null, "TABLE"});
      conn.Close();
      return schemaTable;
    }
      

  3.   

    if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    create ...
    else
    update ...
    GO能解释一下这条语句吗?dbo.sysobjects和N'[dbo].[表名]是怎么回事?
      

  4.   

    表名-->你要创建的表的名字
    dbo.sysobjects-〉你指定数据库中的对象集合
    这一句,如果你指定的表不存在当前数据库,创建,否则
      

  5.   

    [dbo]模式名,其实就是你登陆到数据库服务器的用户名