检查表是否存在最简单的方法?

时间:2016-08-06 11:04:22

标签: c#

我做了一个项目。在我发布的每个下一个版本中,我都会添加更多表格和列。但是,例如某人将拥有版本1.00和某人1.05。 在我的realease e.x 1.06中,我希望包括从1.00版到1.05版的所有添加的表。这个版本1.00将为他添加e.x 5个新表,这个版本1.05只有一个表。

我发现检查表是否存在的代码是这样的:

System.Data.SqlClient.SqlCommand CheckNone = new System.Data.SqlClient.SqlCommand("IF EXISTS(SELECT * from information_schema.tables where table_name= inventory) SELECT 1 ELSE SELECT 0", con);
        con.Open();

        var result = (int)CheckNone.ExecuteScalar();
        if (result == 0)
        {

           //my code...
        }
            else
        }//my code...

我的问题是我每次添加一张桌子时都应该写这个漏洞代码吗?这是对的吗?

1 个答案:

答案 0 :(得分:0)

要根据表的存在管理应用程序的多个版本,请使用简单的xml文件检查表格。

定义包含表格和相应版本的Xml文件。

xml文件的格式可能是:

    <?xml version="1.0" encoding="utf-8" ?>
    <Tables>
        <Table Name="table1"  Version="1.0.0"/>
        <Table Name="table2"  Version="1.0.0"/>
        <Table Name="table3"  Version="1.5.0"/>
        <Table Name="table4"  Version="1.5.0"/>
        <Table Name="table5"  Version="1.6.0"/>
        <Table Name="table6"  Version="1.6.0"/>
    </Tables>

创建管理xml文件的类。

以下方法搜索xml文件并返回其版本。

     public string GetVersion(string tableName)
            {
                XElement xelement = XElement.Load(_xmlFileName);
                var table = xelement.Elements("Table").FirstOrDefault(m => (string)m.Attribute("Name") == tableName);
                if (table != null)
                {
                    var version = (string)table.Attribute("Version");
                    Console.WriteLine(" {0} {1}", tableName, version);
                    return version;
                }
                return string.Empty;
            }

使用当前版本的应用程序检查表的版本并返回true / false。

定义方法如:

 public bool IsTableExist(string tableName)
    {
      // get version of table and compare with your application version
      // return true/false based on comparison
    }