簡體   English   中英

為什么我會將“字符串或二進制數據被截斷”作為錯誤?

[英]Why do I get “String or binary data would be truncated” as an error?

我有一個問題:

字符串或二進制數據將被截斷

這是我的編碼:

String savePath = @"C:\Users\Shen\Desktop\LenzOCR\LenzOCR\WindowsFormsApplication1\ImageFile\" + fileName;

inputImageBox.Image = Image.FromFile(ImageLocation);
inputImageBox.Image.Save(savePath);

String sqlData = "INSERT INTO CharacterOCR(ImageName, ImagePath, Character, CharacterDescription)    
            VALUES('"+fileName+"', '"+savePath+"', '"+typeName+"', '"+CharDesc+"')";
SqlCommand cmd = new SqlCommand(sqlData, con);
cmd.ExecuteNonQuery(); // <<<<<error indicates here

問題是什么?

查看表格的模式並查看最大長度。 你可能試圖插入大於最大長度的東西。

通常認為更好的編碼實踐是將圖像存儲到數據庫中的位置,同時將圖像保存在適當的目錄結構中。

如果您已設置將圖像數據插入數據庫,請讓每個人都知道您的數據庫是什么版本。

編輯:

拉出ImagePath列的SQL Schema,並告訴我你定義了多少個字符可以接受。

接下來,在執行SQL之前,請調用Console.WriteLine(savePath.Length)

savePath.Length是否大於您的ImagePath列定義?

這只是意味着您嘗試加入列中的其中一個值對於您為該列定義的數據類型來說太長了。

例如,嘗試將“Hello” INSERT到只有VARCHAR(4)

當與表定義和storedprocedure參數進行比較時,列長度不同時,您將收到此錯誤。 例:

我有一個名為Employee的表,其中有一列Reason ,在聲明表時, Reason的列長度為varchar(100)

在為Employee表編寫存儲過程時,我將Reason參數聲明為@Reason varchar(250)

在這種情況下,您將收到此錯誤。 因此,請確保列長度是唯一的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM