2012-02-23 46 views
0

是否有可能使用inputdlg函數來執行一個SQL查詢,如下面:如何使用輸入對話框執行SQL查詢

pdbSearchQuery = input('Enter your PDB Code: ', 's'); 
    curs = fetch(exec(conn, ['SELECT * FROM cath_2_wo_dup WHERE pdbcode = ' '''' pdbSearchQuery ''''])); 
    pdbSearchResults = curs.Data 

我管理默認情況下做到這一點,使用命令窗口搜索數據庫中的列,但是我想創建一個對話框,用戶可以在其中鍵入一個值來搜索數據庫,使用上面提到的變量。

它應該是這樣的結尾:

Search bar to search for n column from the database table

當他們點擊「確定」,這將導致該按鈕執行另一個腳本,它會創建表格和數字他們。

這是可以做到在inputdlg還是有,這是否類似方法的另一個功能?

回答

1

這是完全可能的,會給你很大的自由在你的代碼。例如,從inputdlg幫助修改:

prompt = {'Enter table name:','Enter query field:'}; 
dlg_title = 'Input for query'; 
num_lines = 1; 
def = {'mytable','thatProperty'}; 
answer = inputdlg(prompt,dlg_title,num_lines,def); 
curs = fetch(exec(conn, ['SELECT * FROM ' char(answer{1}) ' WHERE ' char(answer{1}) '= ' '''' pdbSearchQuery ''''])); 

應該很好地工作。希望這可以幫助!

+0

我身邊換了幾個名字和變量,我設法從數據庫中檢索列。但是,當我將這段代碼作爲腳本運行並在輸入字段中輸入值並點擊'OK'時,MATLAB崩潰。難道它不能處理我在對話窗口之後執行的腳本的數量嗎?我試圖不執行任何事情,它仍然崩潰。請指教。 – Jeiman 2012-02-23 19:25:33

+1

@Jeiman,我認爲'exec'或'fetch'可能會崩潰,你有多個數據庫連接嗎?另外,當你說「不執行任何事情」時,你的意思是在調用對話框之後不執行任何m腳本? – macduff 2012-02-23 21:20:35

+0

我的歉意是,在另一個腳本可能發生之前,我太早打電話給我的其他腳本。它現在已經修復並正常工作。非常感謝您的解釋和解決方案。 – Jeiman 2012-02-23 21:36:14