熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

經驗技巧:分享兩條Delphi開發經驗[1]

2013-11-23 17:35:45  來源: Delphi編程 

  近期在做數據庫切割工具碰到了一些棘手的問題經過多方打探查找最終得以解決現總結下來給大家共享免的大家以後在碰到類似問題時再耗費大量時間去查找去打探!

  判斷輸入的路徑在服務器上是否存在

  例如要在客戶端執行一個創建數據庫的程序數據庫要在服務器上創建但路徑可以手工輸入這時就面臨一個判斷自已現在輸入的路徑在服務器上是否存在的問題免得在執行Create Database SQL時才報錯找不到路徑

  具體方法如下

  exec masterxp_cmdshell dir E:\DATA 在查詢分析器中執行此段SQL如果存在此路徑會輸出此路徑下的所有文件與文件夾信息還有此盤的可用字節數與已此文件夾的字節數(圖所示);如果此路徑不存在則輸出信息如圖所示提示找不到文件

  但是當路徑中含有空格時如C:\Program Files直接用exec masterxp_cmdshell dir C:\Program Files系統返回結果會如跟圖顯示一樣我們需要做額外處理才能得到正確的返回結果

  ()exec masterxp_cmdshell dir C:\Program Files\Microsoft SQL Server\MSSQL

  這種寫法在查詢分析器中直接執行是沒有問題的也能返回正確結果但如果放到程序中執行

  SQLAdd(exec masterxp_cmdshell dir C:\Program Files\Microsoft SQL Server\MSSQL)Open時就會報錯不能執行

  為什麼呢???

  ()我們接下來查看SQL聯機幫助對XP_CMDSHELL的描述如下

  xp_cmdshell {command_string} [ no_output]

  參數

  command_string

  是在操作系統命令行解釋器上執行的命令字符串command_string 的數據類型為 varchar() 或 nvarchar()沒有默認值command_string 不能包含一對以 上的雙引號如果由 command_string 引用的文件路徑或程序名稱中有空格則需要使用一對引號如果使用嵌入空格不方便可考慮使用 FAT 文件名作為解決辦 法

  no_output

  是可選參數表示執行給定的 command_string但不向客戶端返回任何輸出

  幫助文件提示我們要用一對引號將文件路徑或者程序名稱包起來將整個路徑包不起來不會報錯那我就將帶有空格的單步路徑包起來試試看看行不行執行如下SQLSQLAdd(exec masterxp_cmdshell dir C:\Program Files\Microsoft SQL Server\MSSQL)這樣Open時果然不報錯了看來查詢分析器的語法檢查與我們的Query自己的語法檢查還是有一定區別的不能等同的因此碰到路徑中帶空格的情況正確的寫法還是

  exec masterxp_cmdshell dir C:\Program Files\Microsoft SQL Server\MSSQL

  這同時說明SQL幫助文件中的綠色字體部分 command_string 不能包含一對以上的雙引號 的描述是不正確的看來SQL Server幫助文件與產品也出現了規格與程序不相符的問題了呵呵

[]  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/24747.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.