asp.net – VB.Net IIf函数添加SqlParameter
我正在重写这个长INSERT语句和参数,看起来像这样:
cmd.Parameters.AddWithValue("@Website",General.fnSQLNullValues(tWebsite.Text)) 其中General.fnSQLNullValues是这样的: Public Shared Function fnSQLNullValues(ByVal sValue As Object,Optional ByVal Len As Integer = 999999) As Object If sValue Is Nothing Then Return DBNull.Value fnSQLNullValues = IIf(sValue.ToString.Length = 0,DBNull.Value,Left(sValue.ToString(),Len)) End Function 我根本不喜欢这个,似乎很多代码都是这样做的, cmd.Parameters.AddWithValue("@Website",If(tWebsite.Text,DBNull.Value)) 根据我的理解,如果tWebsite.Text为null或未被接受,则DBNull.Value中的一行代码将替换tWebsite.Text作为值,在我看来,它与General中的其他函数做同样的事情.这是正确的,是一种比另一种更好的方式吗? 此外,我从第二种方式得到警告:“不能推断常见类型;对象假设”,但在我看来,第一种方式是使用通用对象,所以我不知道我是否应该忽略这个警告 解决方法
在代码中使用数据库参数时,字符串有点棘手.如果您有一个空字符串,它将传递一个空字符串值以便插入.但是,如果设置将字符串设置为Nothing值,则会将NULL值插入数据库.否则它将设置一个空字符串.
理想情况下,您的数据层顶部会有某种业务层,它会检查您的tWebsite.Text值,并将Nothing或Text值传递给设置参数的函数.这与您上面的第一个代码示例略有不同.这样,您的数据层只需执行以下命令: cmd.Parameters.AddWithValue("@Website",valueWebsite)) ……没有必要麻烦. 对于其他数据类型(例如整数,小数等),请查看Nullable Types并使用它们.它们使事情变得非常容易.默认情况下,它们初始化为Nothing,因此如果您没有为它赋值(从输入框中),则值保持为Nothing,并且将在数据库中执行正确的NULL插入. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何将trace.axd导出到文件
- asp.net – 在自托管Web应用程序中使用性能计数器
- asp.net-mvc – ASP.Net MVC4根cshtml和“不继承’System.W
- asp.net – Elmah vs Elmah.MVC Nuget软件包 – 哪些使用和
- asp.net – Quartz.net调度程序在部署后不会触发作业/触发器
- asp.net-mvc-3 – 在Kendo网格中显示datetime字段的空单元格
- ASP.NET MVC,Ninject,每个请求多个构造函数的单个实例
- asp.net-mvc – 在扩展方法中使用IoC
- asp.net-web-api – ASP.NET Web API:如何在Web API控制器
- asp.net-mvc – ASP.NET MVC和EF代码第一内存使用
- asp.net-mvc – ASP.NET MVC 2和使用WIF(Windows
- asp.net-mvc – 向MVC 3添加基于声明的授权
- asp.net – 带超时异常的reCaptcha验证
- webservice的两种调用方式
- oauth-2.0 – 覆盖AccessTokenExpireTimeSpan
- asp.net-mvc – 找不到CrystalImageHandler.aspx
- 深蓝词库转换1.8发布
- asp.net core 使用identityServer4的密码模式来进
- asp.net – uk格式的.net 4.0中的日期格式
- asp.net – 将href绑定到Code Behind属性