1.ODBC 错误: [SQL Server]ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 '准备创建的外键约束名称' 冲突。
例如:
ALTER TABLE Table1
ADD CONSTRAINT ReferenceName FOREIGN KEY(ForeignKey) REFERENCES Table2 (PrimaryKey)
(要给Table1的ForeignKey字段添加外键约束,与Table2的PrimaryKey)
如果出现以上ODBC错误,说明Table1中的ForeignKey字段保存了Table2的PrimaryKey字段中没有的数据,所以外键无法建立起来。
解决办法:
找到主键表在外键表中不存在的数据,删除。
2.导出页面Html时出现乱码
解决办法:
在待打印Html前一行添加一下代码
Excel可以识别Table及页面Meta标记
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
保存文件时,如果遇到中文记得转码如下
HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8)
3.DateTime.Now.ToShortDateString()在页面上的显示结果总是17/2/2012
解决办法:
DateTime.Now.ToShortDateString()会根据服务器的语言环境来匹配日期格式,例如服务器上的短日期格式为d/M/yyyy,则该方法返回的日期为17/2/2012。所以要使得系统的日期格式能够保持一致性,最好使用编码方式来格式化日期,例如DateTime.Now.ToString("yyyy-MM-dd")和string.Format("{0:yyyy-MM-dd}",DateTime.Now)等。
4.字符串"2.5"四舍五入后,显示为2
在显示学生毕业时间时是通过学生的[学制]信息计算的,如果学制为2.5,四舍五入后为2的话就提前半年毕业了。
原来使用的是Math.Round 方法,但仔细研究后发现啊,这个.Net里包含的方法和平时我们所说的四舍五入并不是一个意思。它的官方解释是,将小数值舍入到最接近的整数。这句话是什么意思呢,就是1.2调用后为1而1.7调用后为2。但是如果是x.5呢,这个正好是两者中间的数又改取哪个最近的整数呢。官方的解释是,如果 d 为两个整数的中值,这两个整数一个为偶数,另一个为奇数,则返回偶数。所以,2.5返回2!
解决办法:
使用Int(double+0.5)的方式,即 (int)(double.Parse("2.5") + 0.5)
解决办法:
后来又发现,.Net框架下利用自带转型的方法基本都参照一个口诀“四舍六入逢五成双”,然后还发现另一个更简单的方法
string.Format("{0:f0}",double)
5.异常详细信息: System.InvalidOperationException: 对象的当前状态使该操作无效
出现这个异常的原因正是因为2011年12月29号微软发布的最后一次非正常更新程序引起的.在这次安全更新中对于asp.net单次的提交量做了一个最大量限制1000,出现这个异常正是因为页面提交量超过了1000这个限制。
解决办法:
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
</appSettings>
6.需求:查询类型为1、2两个类型的前5个标题,顺序为发布时间降序
该需求的难点在于要先排序再汇总,下面看看先ORDER在UNION的写法
1 SELECT title FROM (SELECT TOP 5 title FROM SiteContent WHERE typeID = 1 ORDER BY [time]) T
2 UNION
3 SELECT title FROM (SELECT TOP 5 title FROM SiteContent WHERE typeID = 2 ORDER BY [time]) T
必须通过子查询的方式进行查询,否则会提示ORDER后面不能直接跟UNION的错误。
注意:
在子查询中使用排序功能需要使用TOP关键字,如果是查询全部则为TOP 100 PERCENT。
7.System.Data.DataTable.Select(String filterExpression) +67
无法在 System.String 和 System.Int32 上执行“>=”操作。
解决办法:
检查保存在DataTable中的数据和比较的表达式,例如上述错误就是由于DataTable中存储了't01'这样的值又使用了表达式't > 0',而Select()方法会自动转型,使得字符型和数字型无法比较而产生错误。
8.将 varchar 转换为数据类型 numeric 时出现算术溢出错误
当两个不同数据类型的表达式用运算符组合后,数据类型优先级规则指定将优先级较低的数据类型转换为优先级较高的数据类型。 如果此转换不是所支持的隐式转换,则返回错误。 当两个操作数表达式具有相同的数据类型时,运算的结果便为该数据类型。
9.数据类型优先级 (Transact-SQL),SQL Server 2005 对数据类型使用以下优先级顺序:
- 用户定义数据类型(最高)
- sql_variant
- xml
- datetime
- smalldatetime
- float
- real
- decimal
- money
- smallmoney
- bigint
- int
- smallint
- tinyint
- bit
- ntext
- text
- image
- timestamp
- uniqueidentifier
- nvarchar(包括 nvarchar(max))
- nchar
- varchar (包括 varchar(max))
- char
- varbinary(包括 varbinary(max))
- binary(最低)