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

看板C_Sharp作者 (我愛阿蓉)時間14年前 (2011/05/03 23:41), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串2/2 (看更多)
我的Table長這樣.... [Table(Name = "DVDTable")] public class DVD { public DVD() { } public DVD(string szTitle, string szRating) { Title = szTitle; Rating = szRating; } [Column(IsPrimaryKey = true, IsDbGenerated = true)] public int PrimKey; [Column(DbType = "nvarchar(max)")] public string Title; [Column] public string Rating; //[Column(DbType = "varbinary(8000)")] public byte[] Data; } 我不解的是.....nvarchar(這邊只要填 1~4000)都OK 但我現在必須是要超過4000.... 而我只要這樣寫 他馬上在CreateDataBase出錯 There was an error parsing the query. [ Token line number = 3,Token line offset = 20,Token in error = max ] 看起來是 他認不得max....可是我google很久 很多人都是這樣寫 只差在他們大小寫不一樣 但我照做也是壞... 我是VS2010.....難道是他API沒寫好嗎..... ※ 引述《QQ29 (我愛阿蓉)》之銘言: : ※ [本文轉錄自 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

05/04 09:11, , 1F
使用的資料庫是??
05/04 09:11, 1F

05/04 11:46, , 2F
nvarchar只能寫1-4000或max, 不過Sql CE不支援max
05/04 11:46, 2F

05/04 14:09, , 3F
何不用nvarchar(max)
05/04 14:09, 3F

05/05 00:48, , 4F
我就是用nvarchar max@@可是不給用~我不太清楚我是用啥DB耶
05/05 00:48, 4F

05/05 00:49, , 5F
手機上的....是sql ce?那如果不支援該怎辦
05/05 00:49, 5F

05/05 00:49, , 6F
我查網路 ntext建議改用nvarchar....但不給用max 真怪
05/05 00:49, 6F
文章代碼(AID): #1Dm28iYy (C_Sharp)
文章代碼(AID): #1Dm28iYy (C_Sharp)