C# 我可以不逐行验证mysql模式吗
我有一个使用本地数据库的程序。用户有不同版本的程序,而程序又有更新数据库的命令。现在我有一大块代码,看起来像:C# 我可以不逐行验证mysql模式吗,c#,mysql,C#,Mysql,我有一个使用本地数据库的程序。用户有不同版本的程序,而程序又有更新数据库的命令。现在我有一大块代码,看起来像: try { using (var cmd = new MySqlCommand("ALTER TABLE `SomeTable` ADD COLUMN `SomeColumn` double NULL ;", con)) { cmd.CommandType = CommandType.Text;
try
{
using (var cmd = new MySqlCommand("ALTER TABLE `SomeTable` ADD COLUMN `SomeColumn` double NULL ;", con))
{
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
}
我有成百上千的方法可以添加或删除列、添加表、创建索引等等。有没有更有效的方法来做到这一点,比如一次验证整个模式,还是我一直在维护它?
我确实打算将其更改为字符串数组,然后只运行数组中的所有字符串,但我不知道是否有更好的方法 您可以从数据库
信息\u schema
一次查询数据库中的整个架构。因此,您可以通过一个查询验证所有列设置。您可以分析结果并检查需要哪些更新。(数据库information\u schema
特定于MySQL):
在dbversion
中获取最新条目:
SELECT * FROM `dbversion` ORDER BY `date` DESC LIMIT 1;
CREATE TABLE `dbversion` (
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`version` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `dbversion`
ADD PRIMARY KEY (`date`,`version`),
ADD KEY `date` (`date`);
SELECT * FROM `dbversion` ORDER BY `date` DESC LIMIT 1;