新聞中心
那么,Delphi中如何判斷服務(wù)器路徑呢?

創(chuàng)新互聯(lián)公司服務(wù)緊隨時代發(fā)展步伐,進行技術(shù)革新和技術(shù)進步,經(jīng)過十載的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計師、專業(yè)的網(wǎng)站實施團隊以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進行成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、建設(shè)、維護、更新和改版,實現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。
例如,要在客戶端執(zhí)行一個創(chuàng)建數(shù)據(jù)庫的程序,數(shù)據(jù)庫要在服務(wù)器上創(chuàng)建,但路徑可以手工輸入,這時就面臨一個判斷自已現(xiàn)在輸入的路徑在服務(wù)器上是否存在的問題,免得在執(zhí)行Create Database SQL時才報錯:找不到路徑。
具體方法如下:
exec master..xp_cmdshell 'dir E:\DATA' ,在查詢分析器中執(zhí)行此段SQL,如果存在此路徑,會輸出此路徑下的所有文件與文件夾信息,還有此盤的可用字節(jié)數(shù)與已此文件夾的字節(jié)數(shù);如果此路徑不存在,則輸出信息提示“找不到文件”。
但是,當(dāng)路徑中含有空格時,如C:\Program Files,直接用exec master..xp_cmdshell 'dir C:\Program Files',系統(tǒng)返回結(jié)果依然提示“找不到文件”,我們需要做額外處理,才能得到正確的返回結(jié)果:
- exec master..xp_cmdshell 'dir "C:\Program Files\Microsoft SQL Server\MSSQL"'
這種寫法,在查詢分析器中直接執(zhí)行是沒有問題的,也能返回正確結(jié)果,但如果放到程序中執(zhí)行:
- SQL.Add('exec master..xp_cmdshell ''dir "C:\Program Files\Microsoft SQL Server\MSSQL"''),
Open時就會報錯,不能執(zhí)行。
2. 我們接下來查看SQL聯(lián)機幫助,對XP_CMDSHELL的描述如下:
- xp_cmdshell {'command_string'} [, no_output]
參數(shù)
'command_string'
是在操作系統(tǒng)命令行解釋器上執(zhí)行的命令字符串。command_string 的數(shù)據(jù)類型為 varchar(255) 或 nvarchar(4000),沒有默認值。command_string 不能包含一對以 上的雙引號。如果由 command_string 引用的文件路徑或程序名稱中有空格,則需要使用一對引號。如果使用嵌入空格不方便,可考慮使用 FAT 8.3 文件名作為解決辦法。
no_output
是可選參數(shù),表示執(zhí)行給定的 command_string,但不向客戶端返回任何輸出。
幫助文件提示我們要用一對引號將文件路徑或者程序名稱包起來,將整個路徑包不起來不會報錯,那我就將帶有空格的單步路徑包起來試試,看看行不行,執(zhí)行 如下SQL:SQL.Add('exec master..xp_cmdshell ''dir C:\"Program Files"\"Microsoft SQL Server"\MSSQL''),這樣Open時果然不報錯了,看來查詢分析器的語法檢查與我們的Query自己的語法檢查還是有一定區(qū)別的,不能等同的。因此,碰到路徑中帶空格的情況,正確的寫法還是:
exec master..xp_cmdshell 'dir C:\"Program Files"\"Microsoft SQL Server"\MSSQL'
這同時說明SQL幫助文件中的綠色字體部分 command_string 不能包含一對以上的雙引號。因此,這樣的描述是不正確的,看來SQL Server幫助文件與產(chǎn)品也會出現(xiàn)“規(guī)格與程序不相符”的問題。
文章名稱:Delphi中如何判斷服務(wù)器路徑
瀏覽地址:http://fisionsoft.com.cn/article/ccecdis.html


咨詢
建站咨詢
