回覆寫在另外一個表 -----該表作爲從表,關聯主表ID
當刪除時,先去從表刪除相關記錄,再刪除主表記錄就可以了。
採用SQL,你就可以很快地找出準確的記錄並且打開一個只包含該記錄的recordset,
再談隨機數
現在你下定決心要榨乾Random 函數的最後一滴油,那麼你可能會一次取出多條隨機記錄或者想採用一定隨機範圍內的記錄。把上面的標準Random 示例擴展一下就可以用SQL應對上面兩種情況了。
爲了取出幾條隨機選擇的記錄並存放在同一recordset內,你可以存儲三個隨機數,然後查詢數據庫獲得匹配這些數字的記錄:
SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3
假如你想選出10條記錄(也許是每次頁面裝載時的10條鏈接的列表),你可以用BETWEEN 或者數學等式選出第一條記錄和適當數量的遞增記錄。這一操作可以通過好幾種方式來完成,但是 SELECT 語句只顯示一種可能(這裏的ID 是自動生成的號碼)
1.執行SQL查詢語句時,將返回查詢得到的記錄集。用法爲:
Set 對象變量名=連接對象.Execute("SQL 查詢語言")
Execute方法調用後,會自動創建記錄集對象,並將查詢結果存儲在該記錄對象中,通過Set方法,將記錄集賦給指定的對象保存,以後對象變量就代表了該記錄集對象。
2.執行SQL的操作性語言時,沒有記錄集的返回。此時用法爲:
連接對象.Execute "SQL 操作性語句" [, RecordAffected][, Option]
·RecordAffected 爲可選項,此出可放置一個變量,SQL語句執行後,所生效的記錄數會自動保存到該變量中。通過訪問該變量,就可知道SQL語句隊多少條記錄進行了操作。
·Option 可選項,該參數的取值通常爲adCMDText,它用於告訴ADO,應該將Execute方法之後的第一個字符解釋爲命令文本。通過指定該參數,可使執行更高效。
這三個方法是連接對象提供的用於事務處理的方法。BeginTrans用於開始一個事物;RollbackTrans用於回滾事務;CommitTrans用於提交所有的事務處理結果,即確認事務的處理。
事務處理可以將一組操作視爲一個整體,只有全部語句都成功執行後,事務處理纔算成功;若其中有一個語句執行失敗,則整個處理就算失敗,並恢復到處裏前的狀態。
BeginTrans和CommitTrans用於標記事務的開始和結束,在這兩個之間的語句,就是作爲事務處理的語句。判斷事務處理是否成功,可通過連接對象的Error集合來實現,若Error集合的成員個數不爲0,則說明有錯誤發生,事務處理失敗。Error集合中的每一個Error對象,代表一個錯誤信息。
一是改sql默認tcp1433爲其它陌生端口,或者在服務端配置工具中直接隱藏1433端口
二是修改sa爲複雜密碼或者禁用,去掉xp_cmdshell等等,連接帳號最好是單獨受限帳號
如以上都不能保證安全,直接配vpn連接就行,
很少有人這麼直接發佈sql到外網,要發佈也是遠程桌面之類,sql可沒外網傳輸的優化處理,不像遠程桌還是圖像什麼的,不超時,不掉包,不穩定纔是假