pb開發的程式,如果原來就3個欄位,已經發布后發現需要再增加三個欄位(datetime,address,phone),請問怎樣能夠保證安全并且便捷(是在pb開發一個update還是做一個批處理程式?)
uj5u.com熱心網友回復:
可以用pb做一個升級程式,檢測資料庫欄位,如果沒有就自動新增。uj5u.com熱心網友回復:
有這樣的例子嗎?uj5u.com熱心網友回復:
我的實作是在資料庫中設定這么1個表版本號,下載地址,是否可以用
程式自己運行是檢查自己否是可用版本
不是可用版本就提示用戶是否執行下載更新
uj5u.com熱心網友回復:
寫資料庫更改的腳本,在PB里執行就可以了對于sql server而言
string ls_sql
ls_sql = "alter table xxx add yyy varchar(20)"
execute immediate :ls_sql using sqlca;
.....
就這幾句話而已,當然,還有很多邏輯判斷方面的事情要做,看你自己了.sql server 2000的幾個系統表,隨便你查
sysdatabases,sysobjects....
sql 2005以上版本系統表的表名有變動,得自己研究一下了
uj5u.com熱心網友回復:
升級腳本帶版本號,升級服務器上下載升級腳本檔案,更新程式再執行sql腳本,執行完洗掉這個腳本
go
if not exists(select 1 from syscolumns where id = object_id('tb') and name = 'columnname')
alter table tb add columnname int
go
uj5u.com熱心網友回復:
全都是答非所問。人家問的是資料庫增加欄位了,程式有沒有什么便捷的方法能自動升級資料視窗。
我的回答是:即使有也沒有必要。資料庫增加了欄位,那么用來錄入的資料視窗手工加上就行了,其他的資料視窗并不一定是必須的,要根據需要是否展現而定。
uj5u.com熱心網友回復:
1.在安裝目錄下建一個SQL的檔案夾,所有的升級陳述句都約定 yyyymmdd_升級陳述句.sql 的名稱,每次升級的升級陳述句都要按這個規范寫,寫SQL陳述句的時候,要使用安全的方式寫,如果有表中有資料,要先將表中的資料轉移到中間表 如 tmp_table 表中(當然還要檢查中間表是否存在),重新構建表結構,然后再插入回來,當然小的增加欄位,不是很重要的,直接用alter table就可以了,存盤程序反復執行都沒什么問題。2.在資料庫中增加一個表,如 system_update(id,sql_name,...),主要用來記錄已經升級了的陳述句
3.開發一個update.exe獨立程式,改程式的目的主要是在啟動后,檢查檢查sql檔案夾下的檔案名和system_update表中的已經升級過的sql進行比較,如果沒有升級過,就在update.exe的主界面的升級串列中呈現出來,如果已經執行過,就不顯示,update.exe有三個按鈕,一個即使立即升級,一個是跳過,一個關閉,升級按鈕就是將升級串列中的升級陳述句讀取出來,在資料庫中執行。
4.在系統啟動時,檢查system_update和sql檔案夾中的檔案,如果存在升級陳述句,則run命令啟動update.exe,關閉程式,啟動update.exe后,用戶執行完,則通過run命令,啟動主程式,就OK了
uj5u.com熱心網友回復:
記得升級陳述句的排序是按時間先后順序執行的uj5u.com熱心網友回復:
升級完畢后,將升級過的陳述句都寫入到system_update表中uj5u.com熱心網友回復:
把資料窗的語法保存到資料庫,檢索資料時動態生成,新增欄位后,把新的資料窗語法替換一下即可uj5u.com熱心網友回復:
這種做法對于表單中的標題欄是不是沒法換成中文或者增加一些字體樣式?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/39975.html
標籤:基礎類
上一篇:Yarn報錯:Could not find any valid local directory for nmPrivate/
