我发现检查表是否存在的代码是这样的:
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...
我的问题是我每次添加一张桌子时都应该写这个漏洞代码吗?这是对的吗?
答案 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
}