“最难不过坚持”
本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作
有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339
- https://jueru.net/
-
- :weixiao:
-
- :shuijiao: :weiqu: :zhenbang: :leng:
-
- :yiwen: :yiwen: :yiwen: :yiwen:
-
- 这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
-
今天在做一个项目时,程序成功向数据库插入一条数据,
插入的是一篇比较大的文章,而且还有很多样式。
Id是int型,Content用的是 ntext类型的
但是当我在手动改数据库Id时出现错误:
错误源:.NET.SqlClient Data Provider
错误信息:将截断字符串或二进制数据。
DBCC执行完毕。如果DBCC输出了错误信息,请与管理员联系。
语句已终止。
出现这个问题的直觉就是插入的数据超过了字段的实际长度。
于是打开数据库修改,发现没有超过的啊?
ntext在我的印象中应该算是最大的了。这样都不行吗?
我又把content数据类型换成nvarchar(MAX),手动更改的时候成功了。
在网上搜索的时候发现nvarchar(MAX) 、ntext是有差别的:
以下转载:http://www.cnblogs.com/dudu/archive/2009/10/17/1585152.html
NTEXT:
默认情况下,NTEXT将文本数据存储在LOB结构中, 在表结构中只存储指针,指针指向该数据在LOB中的存储位置。
NVARCHAR(MAX)
默认情况下,不超过8,000字节的数据直接存储在表结构中,超过的才和NTEXT一样将数据存储在LOB结构中。
NTEXT向NVARCHAR(MAX)的转换:
ALTER TABLE 表名 ALTER COLUMN 字段名 NVARCHAR(MAX) null
执行上面的SQL语句之后,虽然完成了转换,但数据的存储结构并没有改变,还是按照NTEXT的默认存储方式存储在LOB中。
如何实现转换后数据按NVARCHAR(MAX)的方式进行存储呢?只需执行下面的语句:
UPDATE 表名 SET 字段名 = 字段名
比如:表名是Comment,字段名是Content,SQL语句就是: UPDATE Comment SET Content = Content
实测数据:100条数据,耗时706秒。
NTEXT将在以后版本的SQL SERVER中不被支持,微软的文档中建议用NVARCHAR(MAX)取代NTEXT。
ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.意思就是:
Microsoft SQL Server 的未来版本中,将删除 ntext、 文本和 image 数据类型。 请避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。 使用 nvarchar (max)、 varchar (max) 和 varbinary (max) 来代替。