機房重構 SQL語句已終止

2021-07-03 20:23:13 字數 876 閱讀 2488

在下機將消費時間寫入資料庫時,出現了乙個沒有遇到過的錯誤,用了將近一下午的時間才改正過來,其實出錯的原因也很簡單。

「語句已終止」,首先想到的是自己沒有那個能力將更新語句寫成終止語句吧!思維往這個方向偏,就忽略了本身導致問題的原因。思維越來越偏,甚至懷疑是自己寫的sql語句導致資料庫死迴圈了,真是腦洞大開。。。

sql語句如下:

//sql更新命令語句

string cmdtext = "update line set offlinetime=@offtime,conmoney=@money,contime=@contime,status=@statu where cid=@cid and status=@status";

//引數

sqlparameter sqlparams=;

其實仔細看一看就能看到錯誤資訊:將截斷字串或二進位制資料。「

將截斷字串或二進位制資料。」說明新增到資料庫的資訊,有的字段已經超出了資料庫裡的長度被截斷,或者是其中的型別出現了不匹配!其實怎樣準確的找到除錯過程中具體的錯誤,以前的部落格裡面已經有了敘述:《開啟調錯之旅》,這裡就不再多加敘述。

這次字段超出範圍的是消費時間,之前設定的是varchar(10)型別,長度太小,消費時間計算出的數值過大,導致了字串被截斷。當然,出現問題說明varchar型別沒有自動修剪資料的功能,便將這個字段設定成了decimal型別。decimal可以根據設計資料庫時設定的長度自動修剪資料,使資料儲存時適應型別本身的長度,避免了資料過長被截斷的錯誤。

雖然知道怎麼改了,但是具體是怎麼回事兒,卻沒有查到,還是需要大神指教的。

機房重構 限制輸入語句

新增命名空間 using system.text.regularexpressions 限制只能輸入漢字 private void txtsname keypress object sender,keypresseventargs e private void txtpassword keypres...

機房重構 SQL之字元

對於程式中的string型字段,sqlserver中有char varchar nchar nvarchar四種型別來對應 暫時不考慮text和ntext 開建立資料庫中,對這四種型別往往比較模糊,這裡做一下對比。所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以英文空格在其後面填...

機房重構 SQl之儲存過程

上篇部落格介紹了sql檢視的使用,這篇部落格通過內容和例項應用來簡單介紹一下儲存過程。在機房重構的過程中,犯了個大忌 資料庫設計在重構過程被修改了 所以影響了乙個功能的實現,就又重新敲了一下機房收費系統退卡功能。正如 塞翁失馬,焉知非福 純三層的 實現變成了利用儲存過程之後的完美實現。期間的磕磕絆絆...