这个二进制类型,比如varbinary类型,可以用于存储密码等数据。确实不建议把二进制的数据,存储到数据库中

解决方案 »

  1.   


    我看到有个系统 他是这么做的 
    先在系统里用html编辑插件将业务单据的界面编辑好 然后转换为二进制数据
    放到数据库中 系统要打开这个单据界面时就去数据库里获取这个二进制数据再解析为html文件
    通过UI层展现出来 这样的设计怎么样 有问题么?
      

  2.   


    我看到有个系统 他是这么做的 
    先在系统里用html编辑插件将业务单据的界面编辑好 然后转换为二进制数据
    放到数据库中 系统要打开这个单据界面时就去数据库里获取这个二进制数据再解析为html文件
    通过UI层展现出来 这样的设计怎么样 有问题么?这个解析二进制,肯定是需要消耗资源的,会让系统变慢。我觉得直接存储,就可以的,存储成nvarchar类型就可以的,没必要存储成二进制的数据
      

  3.   


    我看到有个系统 他是这么做的 
    先在系统里用html编辑插件将业务单据的界面编辑好 然后转换为二进制数据
    放到数据库中 系统要打开这个单据界面时就去数据库里获取这个二进制数据再解析为html文件
    通过UI层展现出来 这样的设计怎么样 有问题么?这个解析二进制,肯定是需要消耗资源的,会让系统变慢。我觉得直接存储,就可以的,存储成nvarchar类型就可以的,没必要存储成二进制的数据问题是nvarchar有时候就算是MAX也包含不了一个表单编辑的内容 会被截断。
      

  4.   


    我看到有个系统 他是这么做的 
    先在系统里用html编辑插件将业务单据的界面编辑好 然后转换为二进制数据
    放到数据库中 系统要打开这个单据界面时就去数据库里获取这个二进制数据再解析为html文件
    通过UI层展现出来 这样的设计怎么样 有问题么?这个解析二进制,肯定是需要消耗资源的,会让系统变慢。我觉得直接存储,就可以的,存储成nvarchar类型就可以的,没必要存储成二进制的数据问题是nvarchar有时候就算是MAX也包含不了一个表单编辑的内容 会被截断。哦,不会的吧,nvarchar(max) 可以包含2G个字节的,应该不会不够,一个html不可能有2G个字节把。另外,如果max这个不过,那么放到image类型,也会不够,因为image也是2G字节
      

  5.   


    我看到有个系统 他是这么做的 
    先在系统里用html编辑插件将业务单据的界面编辑好 然后转换为二进制数据
    放到数据库中 系统要打开这个单据界面时就去数据库里获取这个二进制数据再解析为html文件
    通过UI层展现出来 这样的设计怎么样 有问题么?这个解析二进制,肯定是需要消耗资源的,会让系统变慢。我觉得直接存储,就可以的,存储成nvarchar类型就可以的,没必要存储成二进制的数据问题是nvarchar有时候就算是MAX也包含不了一个表单编辑的内容 会被截断。哦,不会的吧,nvarchar(max) 可以包含2G个字节的,应该不会不够,一个html不可能有2G个字节把。另外,如果max这个不过,那么放到image类型,也会不够,因为image也是2G字节网上看了下 nvarchar(max)确实可以到2G
    那是不是sp_executesql的参数问题:
    貌似参数
    1、类型必须是:nvarchar;
    2、并且有长度8000限制的(带中文就4000了)
      

  6.   


    我看到有个系统 他是这么做的 
    先在系统里用html编辑插件将业务单据的界面编辑好 然后转换为二进制数据
    放到数据库中 系统要打开这个单据界面时就去数据库里获取这个二进制数据再解析为html文件
    通过UI层展现出来 这样的设计怎么样 有问题么?这个解析二进制,肯定是需要消耗资源的,会让系统变慢。我觉得直接存储,就可以的,存储成nvarchar类型就可以的,没必要存储成二进制的数据问题是nvarchar有时候就算是MAX也包含不了一个表单编辑的内容 会被截断。哦,不会的吧,nvarchar(max) 可以包含2G个字节的,应该不会不够,一个html不可能有2G个字节把。另外,如果max这个不过,那么放到image类型,也会不够,因为image也是2G字节网上看了下 nvarchar(max)确实可以到2G
    那是不是sp_executesql的参数问题:
    貌似参数
    1、类型必须是:nvarchar;
    2、并且有长度8000限制的(带中文就4000了)从这个微软的文档来看,这个和服务器有关系:sp_executesql (Transact-SQL)
    http://technet.microsoft.com/zh-cn/library/ms188001.aspx[ @stmt= ] statement
    包含 Transact-SQL 语句或批处理的 Unicode 字符串。@stmt 必须是 Unicode 常量或 Unicode 变量。 不允许使用更复杂的 Unicode 表达式(例如使用 + 运算符连接两个字符串)。 不允许使用字符常量。 如果指定了 Unicode 常量,则必须使用 N 作为前缀。  字符串的大小仅受可用数据库服务器内存限制。 在 64 位服务器中,字符串大小限制为 2 GB,即 nvarchar(max) 的最大大小。
      

  7.   

    原来这样 
    问题是如果用nvarchar存 是不是读取的时候要比二进制快很多?
      

  8.   


    我觉得是,因为不需要转化,你如果存储成二进制的,还得转化成html,也就是字符串,这个是需要时间的
      

  9.   


    我觉得是,因为不需要转化,你如果存储成二进制的,还得转化成html,也就是字符串,这个是需要时间的
    那么这个时间影响大不大 比如1M的二进制数据转换成html字符串要多长时间;
    再问下您 这种在系统里由客户自己编辑业务单据界面也就是表单 的系统设计是不是比较少,实现的方式是不是有多种途径?