C#,js和sql实用技巧选1
我刚开始.net 开发的那几年,差不多每天坚持搜集实用的技巧和代码片断。几年下来也搜集了上千条。现在选出一些不太容易找或者自己有较多体会的,写在这里。内容太多,分两次发。
1.上传文件超过设置允许的最大值时,显示自定义出错页面。
自己的一点心得:这个帖子里引用了这个链接:https://www.thecodingforums.com/threads/how-to-handle-maximum-request-length-exceeded-exception.97027/ 实践发现,还需要在Application_Error里压制相应的exception。
在php里,不存在这个问题。如果上传文件超过设置允许的最大值,php不会象asp.net 那样抛出一个让人不知道发生什么的空页面。
2.检查当前用户是否属于某个数据库角色
ALTER PROCEDURE [dbo].[ssp_IsDbRole]
@RoleName VARCHAR(50)
AS DECLARE @IsMember BIT
, @CurrentUser VARCHAR(60)
, @UserLogin VARCHAR(60)
, @SIndex INT CREATE TABLE #tmp_Roles
(
RoleName VARCHAR(60)
, RoleID SMALLINT
, IsAppRole INT
) INSERT INTO #tmp_Roles
EXEC sp_helprole IF NOT EXISTS
(
SELECT NULL
FROM #tmp_Roles
WHERE RoleName = @RoleName
)
SET @IsMember = 0
ELSE
BEGIN
SET @CurrentUser = SYSTEM_USER
SET @SIndex = CHARINDEX('\', @CurrentUser)
IF @SIndex > 0
SET @UserLogin = SUBSTRING(@CurrentUser, @SIndex + 1, LEN(@CurrentUser) - @SIndex)
ELSE
SET @UserLogin = @CurrentUser CREATE TABLE #tmp_Members
(
DBRole VARCHAR(60)
, MemberName VARCHAR(60)
, MemberSID VARBINARY(85)
)
INSERT INTO #tmp_Members EXEC sp_helprolemember @RoleName
IF EXISTS
(
SELECT MemberSID
FROM #tmp_Members
WHERE MemberName IN (@CurrentUser, @UserLogin)
)
SET @IsMember = 1
ELSE
SET @IsMember = 0
DROP TABLE #tmp_Members
END
DROP TABLE #tmp_Roles
SELECT @IsMember AS IsMember
3. sql server 2005和2008 报表服务有不同的缺省web服务地址,一个检测到底是2005还是2008的方法是:向这个地址
http://<服务器地址>:<端口号>/reportserver/reportservice.asmx 发一个http请求,然后看返回的文本,如以<html开头就是2008,如以<?xml开始,就是2005。
4. 在报表服务器上创建新目录
string reportPath = "/foo/bar";
bool exists = true;
string parentPath = "/";
string[] reportPaths = reportPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
if (reportPaths.Length > )
{ SearchCondition[] conditions = new SearchCondition[];
SearchCondition condition = new SearchCondition();
condition.Condition = ConditionEnum.Equals;
condition.ConditionSpecified = true;
condition.Name = "Name"; for (int i = ; i < reportPaths.Length; i++)
{
condition.Value = reportPaths[i];
conditions[] = condition;
var result = myreportingServiceWebServiceClient.FindItems(parentPath, BooleanOperatorEnum.And, conditions);
if (result == null || result.Length == )
{
exists = false;
myreportingServiceWebServiceClient.CreateFolder(reportPaths[i], parentPath, null);
}
if (parentPath != "/")
{
parentPath += "/";
}
parentPath += reportPaths[i];
}
}
5. 以下sql
select abc from dbo.a left join dbo.b where b.t = 'a'
如果b.t是null就没有任何返回结果
应改成
select abc from dbo.a left join dbo.b on b.t = 'a'
6. asp.net应用,如果服务器和客户端使用不同的地理区域设置,可能会有不同的日期格式,在解析时要注意这个问题,一种方法是:
DateTime dt = DateTime.MinValue;
string strDate = Request["Date"];
System.Globalization.CultureInfo[] cultures = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures);
foreach (var item in cultures)
{
if (DateTime.TryParse(strDate, item, System.Globalization.DateTimeStyles.None, out dt))
{//合法的日期
......
break;
}
}
7. asp.net应用里,检查Cache是否过期,最好是if (Cache["mykey"] == null || ((MyObj)Cache["mykey"]).MyProperty == null)
而不仅仅是if (Cache["mykey"] == null)
8. 通过连接服务器(linked server)执行存储过程时,触发了错误:
Server 'foo' is not configured for rpc.
如果打开Sql Server Management Studio,linker server properties -- server options -- RPC and RPC out,企图将值改成true,可能会触发错误:
Ad hoc updates to system catalogs are not allowed.
正确做法是执行:
exec sp_serveroption @server='foo', @optname='rpc', @optvalue='true'
exec sp_serveroption @server='foo', @optname='rpc out', @optvalue='true'
9. javascript:列出对象的所有属性名称和值:
function dumpProps(obj, parent) {
for (var i in obj) {
if (parent) {
var msg = parent + "." + i + "\n" + obj[i];
}
else {
var msg = i + "\n" + obj[i];
}
alert(msg);
if (typeof obj[i] === "object") {
if (parent) {
dumpProps(obj[i], parent + "." + i);
}
else {
dumpProps(obj[i], i);
}
}
} }
10. sql server: 在计算列(computed column)上建索引要小心,可能会触发错误:
INSERT failed because the following SET options have incorrect settings: 'ANSI_NULLS'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.
解决办法是正确设置这些标志值:
SET NUMERIC_ROUNDABORT OFF
GO
SET ANSI_PADDING,ANSI_WARNINGS,CONCAT_NULL_YIELDS_NULL ,ARITHABORT,QUOTED_IDENTIFIER,ANSI_NULLS ON
GO
11. 使用windows的Task Scheduler,运行一个批处理文件(.bat)将文件拷贝到一个网络盘:
copy c:\temp\a.txt q:\abc\
这不会成功,得用完整地址:
copy c:\temp\a.txt \\<域名>\\<机器名>\\abc
尽管这个路径已经映射为q:,可是Task Scheduler好像不知道这回事。
另一个方法就是在上面的copy命令前,先执行一条net use映射命令。
C#,js和sql实用技巧选1的更多相关文章
- C#,js和sql实用技巧选2
1.为什么"foo".Equals()不是好做法?因为当正确的写法是"foo".Equals(obj.value),却写成了"foo".Eq ...
- js 处理URL实用技巧
escape().encodeURI().encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤. 但后两者是将字符串转换为UTF-8的方式来传输,解决了 ...
- SQL实用技巧:如何将表中某一列的部分数据合并到一行中
select *,stuff(select ‘,’ + fieldname from table1 for xml path(”)),1,1,”) as field from table2 for ...
- SQL实用技巧:如何分割字符串
create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as beg ...
- SQL实用技巧:如何判断一个值是否为数字的方法
检测是不是数字型的数据, 两种方法 1. ISNUMERIC ( expression ) 2. PATINDEX ( ‘%pattern%‘ , expression ) 1. ISNUMERIC ...
- js基础进阶--编码实用技巧(二)
我的个人博客:http://www.xiaolongwu.cn 接上篇文章 js编码的实用技巧(一) 5.合理利用||运算符 使用||可以作为参数之外的默认值,当第一个参数返回值为false时,那么第 ...
- js基础进阶--编的实用技巧(一)
我的个人博客:http://www.xiaolongwu.cn 在平时的开发中,编码技巧很重要,会让你少写很多代码,起到事倍功半的效果. 下面总结几种简单的技巧,大家共同学习一下 1. 利用+.-./ ...
- .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中
目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...
- 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)
[JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...
随机推荐
- selenium自动爬取网易易盾的验证码
我们在爬虫过程中难免会遇到一些拦路虎,比如各种各样的验证码,时不时蹦出来,这时候我们需要去识别它来继续我们的工作,接下来我将爬取网一些滑动验证码,然后通过百度的EasyDL平台进行数据标注,创建模型, ...
- springboot整合Druid(德鲁伊)配置多数据源数据库连接池
pom.xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-ja ...
- 坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA?
一般步骤:登陆后点邮箱名——安全设置——开通两步验证,用二次验证码微信小程序绑定即可 具体步骤见链接 坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA? 二次验证码小程序于谷歌身份验证 ...
- 循序渐进nginx(三):日志管理、http限流、https配置,http_rewrite模块,第三方模块安装,结语
目录 日志管理 access_log error_log 日志文件切割 自定义错误页 http访问限流 限制请求数 语法 使用 限制连接数 语法 测试 补充: https配置 使用 生成证书 配置ng ...
- CODING DevOps + Nginx-ingress 实现自动化灰度发布
作者:王炜,CODING DevOps 后端开发工程师,拥有多年研发经验,云原生.DevOps.Kubernetes 资深爱好者,Servicemesher 服务网格中文社区成员.获得 Kuberne ...
- 使用java实现希表的基础功能
用java代码完成哈希表数据结构的简单实现, 以公司雇员的添加修改作为模拟实例 具体代码如下: package com.seizedays.hashtable; import java.util.Sc ...
- HTML自动刷新页面
<meta http-equiv="refresh"content="5"/> 英文""
- 浅谈Redis未授权访问漏洞
Redis未授权访问漏洞 Redis是一种key-value键值对的非关系型数据库 默认情况下绑定在127.0.0.1:6379,在没有进行采用相关的策略,如添加防火墙规则避免其他非信任来源ip访问等 ...
- SpringBoot2 整合MinIO中间件,实现文件便捷管理
本文源码:GitHub·点这里 || GitEE·点这里 一.MinIO简介 1.基础描述 MinIO是一个开源的对象存储服务.适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器 ...
- python学习笔记1 -- 面向对象编程类和实例
由于之前有一定基础,所以python中的类的概接受的比较快,与其他语言一样, python也是通过类来进行事务的抽象,一切皆对象,要不然怎么说程序员不缺对象呢. 言归正传,python中类的声明是cl ...