数据库自动升级问题(20分)

  • 主题发起人 主题发起人 admin2008
  • 开始时间 开始时间
A

admin2008

Unregistered / Unconfirmed
GUEST, unregistred user!
我想更新Sqlserver的数据库,在公司写完程序并把本地sql数据库更新了(比如在数据库中加入了新表或者改表中字段名,新增/删除字段,或是视图 存储过程等),然后得到很多客户那里去更新数据库,这样就觉很麻烦,我想做一个自动升级数据库的工具,请问怎么去实现呢。<br>我有这样做就是把视图或存储过程保存为.sql类型的文件 代码是这样的 <br>procedure TForm1.BitBtn2Click(Sender: TObject);<br>begin<br>if trim(label5.Caption)='' then<br>&nbsp; begin<br>&nbsp; &nbsp; messagebox(Handle,'请您先连接服务器!','提示',MB_ICONINFORMATION);<br>&nbsp; &nbsp; exit;<br>&nbsp; end;<br>memo1.Lines.Clear ;<br>memo1.Lines.LoadFromFile(GetCurrentDir+'/date/v_jxc_over.sql');<br>updatedate;<br>memo1.Lines.Clear ;<br>memo1.Lines.LoadFromFile(GetCurrentDir+'/date/jxc_over_cargo_cost.sql');<br>updatedate;<br>memo1.Lines.Clear ;<br>memo1.Lines.LoadFromFile(GetCurrentDir+'/date/v_type_detail.sql');<br>memo1.Lines.Clear ;<br>memo1.Lines.LoadFromFile(GetCurrentDir+'/date/yaoid.sql');<br>updatedate;<br>with adoquery1 do<br>&nbsp;begin<br>&nbsp; &nbsp;close;<br>&nbsp; &nbsp;sql.Clear ;<br>&nbsp; &nbsp;sql.Text:='alter table OUTHEAD add ZY_FS Float null';<br>&nbsp; &nbsp;ExecSQL ;<br>&nbsp;end;<br>showmessage('数据升级成功!');<br>end;<br>不过这样存在一个问题 当数据库有存在这个字段或是视图,存储过程 就出错 我认为我这个方法总觉得不对 
 
先判断一下是否存在,然后决定是否增加
 
我这种方法可行吗 数据库是有很多表 视图 存储过程 函数 等  那不是代码很多<br>的判断 那又怎么去判断呢 
 
select * from sysobjects;//判断表,存储过程,一切对象 <br>select * from syscolumns;//判断列,字段<br><br>再查点详细资料 如上
 
能详细点吗 看不懂 
 
后退
顶部