public int Add(string Cmd) //cmd是通過拼接傳過來的sql命令
{
//new一個sql的連接
SqlConnection conn = new SqlConnection();
//根據連接字串連接資料庫
conn.ConnectionString = conString;
//打開資料庫
conn.Open();
//在conn物件上執行sql命令Sqlstr
SqlCommand cmd = new SqlCommand(Cmd, conn);
int count = cmd.ExecuteNonQuery();
conn.Close();
return count;
}
這是我自己寫的一個 SqlServer 的 類,功能是 添加新行
但現在有個問題,某個欄位如果內容過多,會被自動截取(資料庫中該欄位是text型別)
我在網上看了下,說是因為我在程式中沒有設定資料型別,這個怎么弄啊?
uj5u.com熱心網友回復:
既然都說了欄位過長那就是過長了,怎么跟資料型別有關了?資料庫一個欄位他是有限制大小的。uj5u.com熱心網友回復:
SqlParameter
還有不要用text了,都過時了,可以換成varchar(max)
uj5u.com熱心網友回復:
我記得mssql varchar這類欄位都是有最大長度限制的。你說的是你設定的欄位長度受限,還是提交欄位值的長度超過了設定欄位的長度?uj5u.com熱心網友回復:
要保存的資料 并沒有 超過 資料庫 欄位 的大小。不知道問題出在哪里要保存的資料為html
uj5u.com熱心網友回復:
就是吧資料庫欄位長度加長就行了uj5u.com熱心網友回復:
如果是mysql中的text型別,長度也就是64k,如果你存入的字符確實超過64k,且你的資料庫又沒有切換到嚴格模式,字符是可能在不報錯的情況下被自動截取存入的。uj5u.com熱心網友回復:
把錯誤資訊貼出來把,截圖或者復制粘貼都可以,因為欄位過長可能是兩個原因:1、你和sql服務器通訊的命令欄位過長。
2、你執行的sql操作中的某個欄位的賦值超過規定長度。
這兩個東西也很好解決
問題1你可以通過設定增長服務器通訊允許的欄位長度、拆分存盤程序或變數拼接等方式解決,當然這里少不了拆分傳入資料為變數,也就是樓上的SqlParameter。
問題2你要驗證賦值是否合法,如果合法賦值過長你就要修改資料庫定義的表欄位長度。
uj5u.com熱心網友回復:
如果你是拼字串方式寫sql陳述句,SQL Server(至少以前)只能支持sql陳述句中的字串常量最多8000多個位元組長度。如果拼接的sql陳述句很長,那么你應該使用顯式的“引數化查詢陳述句”來訪問資料庫。uj5u.com熱心網友回復:
比如你寫update [圖書] set [書名]='..............' where ........這里的書名你最多只能寫4000個漢字。使用引數則不受此限制。
uj5u.com熱心網友回復:
欄位長度是否限制了,用 ntext 或者 nvarchar(max)uj5u.com熱心網友回復:
是不是你傳進去得字串格式問題影響得uj5u.com熱心網友回復:
我很好奇,字串存什么 居然超長轉載請註明出處,本文鏈接:https://www.uj5u.com/net/9869.html
標籤:ASP.NET
