CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

字符串存入数据库之前该如何的处理(进者有分)

楼主soldierB(eric)2006-03-10 08:54:56 在 .NET技术 / ASP.NET 提问

两个方面,一个是数据库字段类型应该使用varchar还是nvarchar,   以前使用varchar,但是判断中文和字母数字的混合字符串的长度很麻烦,后来使用nvarchar,中文和字母数字都算作一个字符,计算长度倒是方便了。   可是,使用varchar和nvarchar到底有什么不同?需不需要使用nvarchar呢?  
   
  另一个,字符串在存入数据库之前要做一些编码的处理,比如把空格变为&nbsp;把<、>、双引号、单引号替换掉,把\r\n替换为<br>,这样操作后,字符串的长度就变得比原来长很多,如果要求用户输入100字以内,那么表里的字段就要定义为600的长度,这样做使得字段都变得很长。  
   
  以上两个问题一直困扰着我,不知道大家在这方面都是怎么处理的?一起讨论一下吧。 问题点数:100、回复次数:20Top

1 楼gngnandgngn(仗义执言 )回复于 2006-03-10 09:02:55 得分 6

1。   就使用varchar,   把中文记做两个字符,这是正规做法。  
  2。   我觉得并不需要转换啊Top

2 楼Snowdust(雪尘)回复于 2006-03-10 09:05:40 得分 6

1.varchar就行了  
      "1234"这样的字符串用nvarchar要占用8个字节,而且varchar只占用4个字节。  
  2.你可以保存没有转换的字符串,例如"   \r\n<>'",显示的时候转换一下就可以了。Top

3 楼drk928(一起看斜阳)回复于 2006-03-10 09:11:30 得分 6

你如果想保留格式定义性的东西那也只能这样了.Top

4 楼cuike519(I will be back!)回复于 2006-03-10 09:12:27 得分 6

1、Nvarchar是变长的Unicode。varchar是变长的non-Unicode.在处理多语言信息的时候一定要使用nvarchar。  
  2、对于一般包括空格或者其他格式字符的字段,使用nvarchar并给足够的长度,nvarchar最长支持4000个字符,或者使用ntext类型保存这些信息。Top

5 楼xiaogueizi(寻寻觅觅、冷冷清清、凄凄惨惨戚戚!)回复于 2006-03-10 09:13:33 得分 6

1:varchar就行了吧~~~~nvarchar是放unicode的,双字节的。  
  2:......Top

6 楼jiezhi(风满袖)回复于 2006-03-10 09:15:04 得分 6

建议使用nvarchar,而且在做国际化程序时是必须的.  
   
  Top

7 楼songxiaozhao(雨朋)回复于 2006-03-10 09:15:42 得分 6

1.nvchar  
  2.转化   安全第一Top

8 楼cow8063(天涯远不远?不远!人在天涯,天涯怎会远)回复于 2006-03-10 09:19:19 得分 6

nvarchar   多言语支持  
  2   我也觉得不需要转换Top

9 楼soldierB(eric)回复于 2006-03-10 09:21:49 得分 0

为什么不需要转换呢?  
   
  如果用户在多行文本框里输入  
   
  line1:   fdj      
  line2:   jfsd  
   
  如果不转换,输出就会变为line1:   fdjline2:jfsd  
   
  另外,为了防止注入,也要把单引号等关键字替换掉  
   
  如果不转换,以上两种情况是怎么避免的呢?Top

10 楼HH80893070(.Net菜鸟)回复于 2006-03-10 09:31:15 得分 6

关注Top

11 楼nameone(过客)回复于 2006-03-10 09:34:39 得分 6

UPTop

12 楼soldierB(eric)回复于 2006-03-10 11:29:02 得分 0

ding  
  Top

13 楼lgnet(www.51bw.net)回复于 2006-03-10 11:53:46 得分 6

使用varchar,这样的字段可以节约空间,如果存储的内容没有varchar定义的字段长,那么多出来的部分决不占空间!Top

14 楼iuhxq(小灰)回复于 2006-03-10 12:00:33 得分 6

如果少量数据就用nvarchar吧,它与varchar的区别是长度不足的部分就空出来,而varchar不足的部分是用空格补上的  
   
  大量数据可以使用text字段Top

15 楼soldierB(eric)回复于 2006-03-13 17:50:02 得分 0

ding  
  Top

16 楼flashthunder(闪雷(人生有梦,筑梦能圆))回复于 2006-03-13 17:53:14 得分 6

mark一下Top

17 楼ahui9527(ahui)回复于 2006-03-13 19:29:36 得分 6

输出的时候要把\n之类的换成<br>就可以了,或者使用<pre>Top

18 楼blackhero(黑侠客)回复于 2006-03-13 19:32:13 得分 6

nvarcharTop

19 楼real_weboy(波→ONLINE)回复于 2006-03-13 19:43:50 得分 10

我一般是在输出的时候转换字符,而存入到数据库的时候不进行转换。如果怕SQL注入攻击,你可以使用存储过程或者参数化查询语句。显示在页面的时候再:  
   
  HttpUtility.HtmlEncode();  
   
  就OK了。Top

20 楼soldierB(eric)回复于 2006-03-13 22:45:02 得分 0

我觉得real_weboy(波→ONLINE)说得到是有点道理。。有否定的吗?Top

相关问题

  • 在JavaBean中,如何高效的将如下字符串存入数据库
  • 关于系统部署前数据库连接字符串的处理
  • 十万火急 十万火急 !往数据库中存入一个字符串然后又取出来跟原来字符串不一样?
  • 怎样把下面格式字符串转换成时间存入数据库中?
  • [请问]用ADO方式访问ACCESS数据库时,如何能够存入一个二进制字符串
  • 字符串处理
  • 字符串处理!!!
  • 字符串处理
  • 字符串处理!
  • 字符串处理

关键词

  • 字段
  • 转换
  • 数据库
  • 字符
  • 中文
  • unicode
  • 字符串
  • nvarchar
  • 存入
  • 使用

得分解答快速导航

  • 帖主:soldierB
  • gngnandgngn
  • Snowdust
  • drk928
  • cuike519
  • xiaogueizi
  • jiezhi
  • songxiaozhao
  • cow8063
  • HH80893070
  • nameone
  • lgnet
  • iuhxq
  • flashthunder
  • ahui9527
  • blackhero
  • real_weboy

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo