[問題] DataBase 欄位有字串長度限制該怎麼解!

看板C_Sharp作者 (我愛阿蓉)時間14年前 (2011/05/01 22:39), 編輯推噓2(2014)
留言16則, 6人參與, 最新討論串1/2 (看更多)
※ [本文轉錄自 Programming 看板 #1DlN1yaf ] 作者: QQ29 (我愛阿蓉) 站內: Programming 標題: [問題] DataBase 欄位有字串長度限制該怎麼解! 時間: Sun May 1 22:38:49 2011 不好意思想請教各位 遇到一個DataBase的設計問題 我是沒有任何database相關知識背景 survey後 我 是使用 DataContext這個Class http://msdn.microsoft.com/zh-tw/library/system.data.linq.datacontext.aspx 我的某一個Table存的資料是 struct MyData{ string Key; string Content;} 我以為很簡單 但我發現他有一個大問題就是 我insert的字串要是超過4000 length 他就爆出 string truncation exception......... 我無法限制插入字串的長度, 那是使用者輸入的..... 而我也不曉得該怎麼辦~ 我的疑惑點有兩個 1. DB為啥要有字串長度的限制@@ 是怕太長 一筆資料太大嗎?? 2. 若一般人遇到我這種case要怎麼樣 處理呢? 我自己想法是..... (1)我就多宣告幾個Content....例如 struct MyData{string Key; string Content1, Content2, Content3....} 然後要insert資料時把字串以四千 切割照順序 存到1 2 3 然後query時 在寫很無腦的 string Content = 1 + 2 + 3; 這根本就......還是有機會爆炸 但我實在想不到方法 因為他欄位無法動態增加.. (2) 我一筆資料插入 就把Content 存到 Key.txt... 然後MyData改成紀錄 檔案名稱 或是我因為用Key當檔名 就根本不用紀錄檔名了.... 但缺點是 我每次query一筆資料就要 file 開關 一次 多筆就是多次 我認為這缺點很嚴重....畢竟IO很慢 且頻繁..... 我實在不知道該怎麼辦= = 主要是我對DB不熟 只是單純survey這些API 可是不應該只有我會遇到這問題~~不知道大家是如何解決的~ 請各位給點意見 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.70.221 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.70.221 ※ 編輯: QQ29 來自: 123.192.70.221 (05/01 22:44)

05/01 23:37, , 1F
什麼樣的資料會超過4000?
05/01 23:37, 1F

05/01 23:37, , 2F
你分三段就有12000,什麼樣的資料會超過12000?
05/01 23:37, 2F

05/01 23:45, , 3F
我知道你的問題 你可以新增多個欄位
05/01 23:45, 3F

05/01 23:45, , 4F
你必須把內容做分類(時間 地點 標題 ...etc)
05/01 23:45, 4F

05/02 00:40, , 5F
您指的新增多個欄位是 我(1)的想法嗎@@
05/02 00:40, 5F

05/02 00:40, , 6F
可是我還是無法保證他不會爆耶
05/02 00:40, 6F

05/02 01:00, , 7F
問題應該是在database欄位所用的型態
05/02 01:00, 7F

05/02 01:00, , 8F
改成ntext就可以到2^30個字(假設是用sql server)
05/02 01:00, 8F

05/02 12:13, , 9F
ntext好像等於MaxVarChar型態
05/02 12:13, 9F

05/02 23:05, , 10F
我用了ntext遇到怪事~insert可以成功 delete就exception說
05/02 23:05, 10F

05/02 23:06, , 11F
ntext不支援比較....毫無頭緒
05/02 23:06, 11F

05/02 23:06, , 12F
改用nvarchar(max)他在createdatabase就exception.整個沒頭緒
05/02 23:06, 12F

05/03 10:48, , 13F
你不把錯誤訊息整個貼上來, 別人想幫你也是整個沒頭緒
05/03 10:48, 13F

05/03 10:48, , 14F
現在的錯誤訊息都寫得不錯, 通常讀一下就知道錯在哪裡了
05/03 10:48, 14F

05/03 10:48, , 15F
不然把整個訊息丟去google, 99%都會有解答
05/03 10:48, 15F

05/03 23:33, , 16F
資料庫不也是資料庫引擎對資料庫檔案作IO嗎?
05/03 23:33, 16F
文章代碼(AID): #1DlN2Jum (C_Sharp)
文章代碼(AID): #1DlN2Jum (C_Sharp)