在本文中,我们将给您介绍关于asp.net–VB.NetIIf函数添加SqlParameter的详细内容,并且为您解答vb向sql数据库中添加数据的相关问题,此外,我们还将为您提供关于.net–是否需
在本文中,我们将给您介绍关于asp.net – VB.Net IIf函数添加SqlParameter的详细内容,并且为您解答vb向sql数据库中添加数据的相关问题,此外,我们还将为您提供关于.net – 是否需要在SqlParameter名称之前添加一个@、.net-4.0 – 如何将标记化参数添加到web.config文件中,以便它显示在SetParameters.xml中?、asp.net SqlParameter如何根据条件有选择的添加参数、asp.net – 从One Build任务创建多个SetParameters.xml的知识。
本文目录一览:- asp.net – VB.Net IIf函数添加SqlParameter(vb向sql数据库中添加数据)
- .net – 是否需要在SqlParameter名称之前添加一个@
- .net-4.0 – 如何将标记化参数添加到web.config文件中,以便它显示在SetParameters.xml中?
- asp.net SqlParameter如何根据条件有选择的添加参数
- asp.net – 从One Build任务创建多个SetParameters.xml
asp.net – VB.Net IIf函数添加SqlParameter(vb向sql数据库中添加数据)
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中的其他函数做同样的事情.这是正确的,是一种比另一种更好的方式吗?
此外,我从第二种方式得到警告:“不能推断常见类型;对象假设”,但在我看来,第一种方式是使用通用对象,所以我不知道我是否应该忽略这个警告
解决方法
理想情况下,您的数据层顶部会有某种业务层,它会检查您的tWebsite.Text值,并将nothing或Text值传递给设置参数的函数.这与您上面的第一个代码示例略有不同.这样,您的数据层只需执行以下命令:
cmd.Parameters.AddWithValue("@Website",valueWebsite))
……没有必要麻烦.
对于其他数据类型(例如整数,小数等),请查看Nullable Types并使用它们.它们使事情变得非常容易.默认情况下,它们初始化为nothing,因此如果您没有为它赋值(从输入框中),则值保持为nothing,并且将在数据库中执行正确的NULL插入.
.net – 是否需要在SqlParameter名称之前添加一个@
Dim parm As New sqlParameter("searchText",sqlDbType.VarChar) parm.Direction = ParameterDirection.Input parm.Size = 50 parm.Value="test" cmd.Parameters.Add(parm)
并且该过程包含@searchText的参数
即从代码传递的参数名称是searchText,存储过程中的参数名称是@searchText。
但是它正常工作,我总是得到所需的结果。
所以我的问题是这样的,所以没有必要在参数之前指定@?是否附加@,任何人都可以给出答案。
The ParameterName is specified in the form @paramname.
根据源代码(参考源中的SqlCommand
和SqlParameter.ParameterNameFixed
),如果需要,会自动添加一个@。
所以是的,它是有效的,但它是一个无证的功能。最佳实践建议您不要依赖此操作,并用@手动前缀参数名称。
.net-4.0 – 如何将标记化参数添加到web.config文件中,以便它显示在SetParameters.xml中?
如何从AppSettings部分添加密钥?
解决方法
http://vishaljoshi.blogspot.com/2010/07/web-deploy-parameterization-in-action.html
asp.net SqlParameter如何根据条件有选择的添加参数
SqlParameter带参数的增删改查语句,可以防止注入.有时候写sql语句的时候会根据方法传进来的参数来判断sql语句中where条件的参数.一般方法
DAL层方法
public UserInfo GetAll(UserInfo a)
{
string strSql = "select id,name,code,password from [tb].[dbo].[User] where 1=1";
strSql += " and [id]=@id";
strSql += " and [name]=@name";
strSql += " and [code]=@code";
strSql += " and [password]=@password";
SqlParameter[] parameters = {
new SqlParameter("@id", a.id)
new SqlParameter("@name", a.name)
new SqlParameter("@code", a.code),
new SqlParameter("@password", a.password)
};
SqlDataReader reader = SqlHelper.ExecuteReader(strSql, parameters);
UserInfo hc = new UserInfo();
while(reader.Read())
{
hc.id = reader.GetInt32(reader.GetOrdinal("id"));
hc.name = reader.GetString(reader.GetOrdinal("name"));
hc.code = reader.GetString(reader.GetOrdinal("code"));
hc.password = reader.GetString(reader.GetOrdinal("password"));
}
reader.Close();
return hc;
}
现在想根据集合UserInfo内属性来添加SqlParameter参数
方法如下
DAL层方法
public UserInfo GetALL(UserInfo a)
{
string strSql = "select id,name,code,password from [tb].[dbo].[User] where 1=1";
if (a.id>0) strSql += " and [id]=@id";
if (!string.IsNullOrEmpty(a.name)) strSql += " and [name]=@name";
if (!string.IsNullOrEmpty(a.code)) strSql += " and [code]=@code";
if (!string.IsNullOrEmpty(a.password)) strSql += " and [password]=@password";
List<SqlParameter> parametertemp = new List<SqlParameter>();
if (a.id > 0) parametertemp.Add(new SqlParameter("@id", a.id));
if (!string.IsNullOrEmpty(a.name)) parametertemp.Add(new SqlParameter("@name", a.name));
if (!string.IsNullOrEmpty(a.code)) parametertemp.Add(new SqlParameter("@code", a.code));
if (!string.IsNullOrEmpty(a.password)) parametertemp.Add(new SqlParameter("@password", a.password));
SqlParameter[] parameters = parametertemp.ToArray();//ToArray()方法将 List<T> 的元素复制到新数组中。
SqlDataReader reader = SqlHelper.ExecuteReader(strSql, parameters);
UserInfo hc = new UserInfo();
while (reader.Read())
{
hc.id = reader.GetInt32(reader.GetOrdinal("id"));
hc.name = reader.GetString(reader.GetOrdinal("name"));
hc.code = reader.GetString(reader.GetOrdinal("code"));
hc.password = reader.GetString(reader.GetOrdinal("password"));
}
reader.Close();
return hc;
}