2011-11-26 62 views
0

我一直在試圖插入一個巨大的文字編輯字符串到我的數據庫。我正在開發的應用程序允許我的客戶從其網站的管理部分創建和編輯他們的網站條款和條件。所以你可以想像,它們非常長。我有18,000多個字符的長度,並且現在在嘗試添加另一個文本時已經收到錯誤。經典ASP/MySQL - 參數問題

我收到的錯誤是這樣的:

ADODB.Command error '800a0d5d' 
Application uses a value of the wrong type for the current operation 

指向我的應用程序的一部分,特別是Set newParameter行:

Const adVarChar = 200 
Const adParamInput = 1 
Set newParameter = cmdConn.CreateParameter("@policyBody", adVarChar, adParamInput, Len(policyBody), policyBody) 
cmdConn.Parameters.Append newParameter 

現在,這個政策我創造,這是目前如果是18,000多個字符,則只有一半完整。它可以跳到50-60,000!我嘗試使用adLongVarChar = 201 ADO類型,但這仍然沒有解決它。

我是否爲這樣一個大型項目做正確的事情?如果我做對了,我該如何解決這個問題? ......或者如果我做錯了什麼,那麼正確的是什麼?

+0

如果你想保存這樣的數據,文件驅動的數據庫不會變得更好,因爲它只是很少關係的大型連續文件(用戶 - >協議)? –

+0

你正在寫入MySQL或SQL服務器?無論哪種方式,表格定義是什麼? – billinkc

+0

表格列設置爲LONGTEXT。我嘗試了BLOB,但它返回日語,所以我回去了。請問耶穌,你可以定義「文件驅動數據庫」嗎?我正在使用文本編輯器和數據庫,因爲我需要用戶格式的文本(粗體,顏色和縮進)。 – TheCarver

回答

1

儘量避免將文檔放入數據庫中。有時候這是一個合理的妥協,序列化的對象,標記片段等。 如果你不想用sql查詢文檔,唯一的好處是所有的東西都在一個地方。即備份你的數據庫,你也備份你的文件,並且你可以專門使用你的數據庫連接。

即使沒有任何東西是免費的,在您的數據庫中裝載所有關於這些東西的東西也會讓您付出代價。

如果可以的話。 有一個文檔表,文件的用戶名和文檔目錄中的內部名稱,所以文件名在文件系統中是唯一的,如果可能有多個文件系統,則文件名是路徑描述。 然後只需上傳並下載所選文檔作爲文件,在相關數據庫實體的get或set上。 您需要了解部署問題,文檔目錄是否存在,以及運行mysql守護程序的帳戶,因爲可以看到它,但大多數情況下,保留文檔與db分離的問題更容易處理比現在遇到的頭部劃傷者要多。