好记性不如烂笔头

目录

1、SQL Server使用“like”关键字模糊查询时,特殊字符需要转义

2、.net调用java的WebService时,输入参数无法传递值始终为null的问题

3、.net中MVC项目数据库迁移命令

4、WinForm中DataGridView不显示横向滚动条

5、CSS改变窗体大小div没有水平平铺导致出现白色背景问题


1、SQL Server使用“like”关键字模糊查询时,特殊字符需要转义

SQL Server执行sql时,如果使用“like”关键字进行模糊查询,则一些特殊字符需要转义,如:“[”、“_”、“%”、“'”

select * from Student where Number like '高新校区[2021]001号'   --错误

select * from Student where Number like '高新校区[[]2021]001号'   --正确

        #region SQL参数处理
        public static string ConvertLikeParam(string param)
        {
            param = param.Replace("[", "[[]");
            param = param.Replace("_", "[_]");
            param = param.Replace("%", "[%]");
            param = param.Replace("'", "''");
            return param;
        }
        #endregion

2、.net调用java的WebService时,输入参数无法传递值始终为null的问题

.net调用java的webservice时,如果传递的对象参数中包含非基本数据类型,如包含Long或Double,则服务端接收到的会是null,这是因为生成的webservice对象的字段会多一个xxxSpecified属性,需要设置成true,才会在序列化的时候包含进去;
解决方法:将字段类型改为基本数据类型,即long、string、int(小写)等,这样在生成webservice时就不会产生xxxSpecified属性;

java提供webservice时,如果接口文件和返回的自定义对象文件不在同一个命名空间,会导致.net调用该webservice时,返回的对象字段全部为null,原因是命名空间不一致导致.net无法序列化对象;

3、.net中MVC项目数据库迁移命令

数据库迁移
enable-Migrations -force 

update-database -force -Verbose 

4、WinForm中DataGridView不显示横向滚动条

DataGridView设置有些列固定宽度,某一列占用剩余的宽度,使所有列充满整个空间而不显示横向滚动条:
(1)在窗体构造函数中先把自动生成列设置为false,如:dgvMember.AutoGenerateColumns = false;
(2)设置“确定可见列的自动调整大小模式(AutoSizeColumnsMode)”为“None”;
(3)编辑列,先设置需要固定宽度的列,所有固定大小列设置完后,设置自动大小列,将该列的AutoSizeMode属性设置为“Fill”,这时所有列会完全充满整个控件而不产生横向滚动条;

5、CSS改变窗体大小div没有水平平铺导致出现白色背景问题

当改变窗体大小时,页面存在div没有水平平铺出现白色背景

解决方法:添加样式“min-width: 1200px;”宽度要超过想要显示区域的宽度;

6、安装OpenSSH之后无法建立SFTP连接问题

本地笔记本电脑win7系统,参考地址(Windows Server2012 64位安装OpenSSH服务_liinux-Talk is cheap,show me the code.-CSDN博客)安装OpenSSH之后,无法创建SFTP连接,提示权限不足,也已经创建系统账号,用账号密码登录,死活不成功

最后又重新创建一个账号、密码才登录成功。 

7、MIT许可协议使用方法

MIT许可协议的约束相对较小,可用于商业用途,但要列出LICENSE文件。

好记性不如烂笔头_第1张图片

8、IIS假死

参考文章:

今上午遇到IIS假死,多种排查,已解决_-咖啡-的博客-CSDN博客_iis假死

问题仍未解决,通过日志查找IIS崩溃具体原因:

IIS崩溃时自动抓取Dump - 虎头 - 博客园

好记性不如烂笔头_第2张图片

9、数据库设计规范

(1)数据类型尽量贴合字段属性,可以int不用char,可以bit不用int;

(2)表字段非特殊情况都设置为“不允许为null”,如字段确实无值可设置为一个缺省值,避免表查询时为null导致索引不起作用;

(3)如果业务是层层递进,前后关联,表设计时要在流程后面的表中包含流程前面表中的字段,避免数据量大时,关联查询非常耗时导致影响系统性能;

(4)如果表字段涉及金额,要使用decimal类型,避免使用double,double类型在运算时可能会导致精度缺失;

(5)表字段中对于可以根据两个字段的值得到另一个值的情况,也要给该值新增字段,可以通过SQL直接查询到结果,避免在SQL中进行运算操作,如:不含税金额、税率、含税金额之间的运算;

10、REST接口规范理解

好记性不如烂笔头_第3张图片

11、Windows server 2012服务器重启及开始菜单打开方式:
1、鼠标光标放到窗体左下角,待开始菜单弹出后即可点击进入开始菜单;
2、鼠标光标放到窗体右下角,待显示搜索、开始、设置侧边栏后,点击设置,可重启服务器

12、.Net未获取到CAS认证时信息CasAuthentication.CurrentPrincipal时,跳转至登录页

if (CasAuthentication.CurrentPrincipal == null)
{
	string casLoginUrl = DotNetCasClient.CasAuthentication.CasServerLoginUrl;
	string redirectUrl = string.Format("{0}?service={1}", casLoginUrl, Common.UrlEscape(Request.Url.AbsoluteUri));
	string tipInfo = string.Format("if(confirm('未获取到当前用户的认证信息,将跳转至认证页面。')) window.location.href='{0}';", redirectUrl);
	Response.Write("");

	// DotNetCasClient.CasAuthentication.RedirectToLoginPage();  // 没有提示,直接跳转
	return;
}

(Common.UrlEscape方法为笔记13中的Url特殊字符转义的方法)

13、HTML转义字符 & Url中特殊字符转义处理(Url中特殊字符编码与解码)

参考:HTML转义字符&url编码表 - Junsec - 博客园

        #region Url中特殊字符编码
        /// 
        /// Url中特殊字符编码
        /// 
        /// url字符串
        /// 编码后的Url字符串
        public static string UrlEscape(string url)
        {
            // 避免和转义后的%冲突,第一个转义%
            url = url.Replace("%", "%25")
                .Replace(" ", "%20").Replace("\"", "%22").Replace("#", "%23")
                .Replace("&", "%26").Replace("(", "%28").Replace(")", "%29")
                .Replace("+", "%2B").Replace(",", "%2C").Replace("/", "%2F")
                .Replace(":", "%3A").Replace(";", "%3B").Replace("<", "%3C")
                .Replace("=", "%3D").Replace(">", "%3E").Replace("?", "%3F")
                .Replace("@", "%40").Replace("[", "%5B").Replace("\\", "%5C")
                .Replace("]", "%5D").Replace("^", "%5E").Replace("_", "%5F")
                .Replace("`", "%60").Replace("{", "%7B").Replace("|", "%7C")
                .Replace("}", "%7D").Replace("~", "%7E");
            return url;
        }
        #endregion

        #region Url中特殊字符解码
        /// 
        /// Url中特殊字符解码
        /// 
        /// url字符串
        /// 解码后的Url字符串
        public static string UrlDecode(string url)
        {
            url = url.Replace("%20", " ").Replace("%22", "\"").Replace("%23", "#")
                .Replace("%26", "&").Replace("%28", "(").Replace("%29", ")")
                .Replace("%2B", "+").Replace("%2C", ",").Replace("%2F", "/")
                .Replace("%3A", ":").Replace("%3B", ";").Replace("%3C", "<")
                .Replace("%3D", "=").Replace("%3E", ">").Replace("%3F", "?")
                .Replace("%40", "@").Replace("%5B", "[").Replace("%5C", "\\")
                .Replace("%5D", "]").Replace("%5E", "^").Replace("%5F", "_")
                .Replace("%60", "`").Replace("%7B", "{").Replace("%7C", "|")
                .Replace("%7D", "}").Replace("%7E", "~")
                .Replace("%25", "%");  // 避免和转义后的%冲突,最后一个转义%
            return url;
        }
        #endregion

14、.Net里的Global文件中Application_AcquireRequestState方法的生命周期理解

请求页面时,该方法会调用多次,来获取页面中的静态资源(经测试,第一次的时候会调用多次,后面再请求页面,会少执行很多次,这是因为浏览器从缓存中取了静态资源)

在该方法中请求静态资源时,访问Session会报异常(“会话状态在此上下文中不可用。”)。

诸如aspx、ashx这类的动态资源Session就可以访问到。

你可能感兴趣的:(分享类,c#,.net,sql)