作者QQ29 (我爱阿蓉)
站内C_Sharp
标题[问题] DataBase 栏位有字串长度限制该怎麽解!
时间Sun May 1 22:39:13 2011
※ [本文转录自 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)
1F:→ apiod:什麽样的资料会超过4000? 05/01 23:37
2F:→ apiod:你分三段就有12000,什麽样的资料会超过12000? 05/01 23:37
3F:推 wa007123456:我知道你的问题 你可以新增多个栏位 05/01 23:45
4F:→ wa007123456:你必须把内容做分类(时间 地点 标题 ...etc) 05/01 23:45
5F:→ QQ29:您指的新增多个栏位是 我(1)的想法吗@@ 05/02 00:40
6F:→ QQ29:可是我还是无法保证他不会爆耶 05/02 00:40
7F:→ deuter:问题应该是在database栏位所用的型态 05/02 01:00
8F:→ deuter:改成ntext就可以到2^30个字(假设是用sql server) 05/02 01:00
9F:推 horngsh:ntext好像等於MaxVarChar型态 05/02 12:13
10F:→ QQ29:我用了ntext遇到怪事~insert可以成功 delete就exception说 05/02 23:05
11F:→ QQ29:ntext不支援比较....毫无头绪 05/02 23:06
12F:→ QQ29:改用nvarchar(max)他在createdatabase就exception.整个没头绪 05/02 23:06
13F:→ deuter:你不把错误讯息整个贴上来, 别人想帮你也是整个没头绪 05/03 10:48
14F:→ deuter:现在的错误讯息都写得不错, 通常读一下就知道错在哪里了 05/03 10:48
15F:→ deuter:不然把整个讯息丢去google, 99%都会有解答 05/03 10:48
16F:→ optimist9266:资料库不也是资料库引擎对资料库档案作IO吗? 05/03 23:33