GVKun编程网logo

asp.net – VB.Net IIf函数添加SqlParameter(vb向sql数据库中添加数据)

17

在本文中,我们将给您介绍关于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数据库中添加数据)

asp.net – VB.Net IIf函数添加SqlParameter(vb向sql数据库中添加数据)

我正在重写这个长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插入.

.net – 是否需要在SqlParameter名称之前添加一个@

.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。

但是它正常工作,我总是得到所需的结果。

所以我的问题是这样的,所以没有必要在参数之前指定@?是否附加@,任何人都可以给出答案。

根据 to the documentation,名字必须以@开头:

The ParameterName is specified in the form @paramname.

根据源代码(参考源中的SqlCommandSqlParameter.ParameterNameFixed),如果需要,会自动添加一个@。

所以是的,它是有效的,但它是一个无证的功能。最佳实践建议您不要依赖此操作,并用@手动前缀参数名称。

.net-4.0 – 如何将标记化参数添加到web.config文件中,以便它显示在SetParameters.xml中?

.net-4.0 – 如何将标记化参数添加到web.config文件中,以便它显示在SetParameters.xml中?

我需要能够在AppSettings部分中将一个参数添加到在使用MSDeploy进行部署的TFS构建期间生成的SetParameters.xml文件中.目前只有连接字符串被标记化.

如何从AppSettings部分添加密钥?

解决方法

我找到了自己问题的答案.下面的链接是一篇很棒的文章,介绍如何在webdeploy部署期间添加要填写的自定义参数.

http://vishaljoshi.blogspot.com/2010/07/web-deploy-parameterization-in-action.html

asp.net SqlParameter如何根据条件有选择的添加参数

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;
}

DBUtility层SqlHelper
复制代码 代码如下:

public SqlDataReader ExecuteReader(string query, params SqlParameter[] parameters)
{
SqlConnString = GetConnect2();
SqlConnString.Open();
SqlCommand SqlCmd = new SqlCommand();
SqlCmd.Connection = SqlConnString;
SqlCmd.CommandText = query;
//SqlCmd.Parameters.AddRange(parameters);//AddRange()不能传空参数组
//params 的意思就是允许传空参数组
foreach (SqlParameter item in parameters)
{
SqlCmd.Parameters.Add(item);
}
SqlDataReader dr;
try
{
dr = SqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
catch (Exception ee)
{
SqlConnString.Close();
throw ee;
}
}
您可能感兴趣的文章:

asp.net – 从One Build任务创建多个SetParameters.xml

asp.net – 从One Build任务创建多个SetParameters.xml

我正在寻找一种解决方案,允许我生成Web Deploy Package以及相关的deploy.cmd和SetParameters.xml.

但我需要生成一个deploy.cmd和SetParameters.xml Per Environment

我需要我的输出看起来如下

> ProjectName.DevSetParameters.xml
> ProjectName.DevDeploy.cmd
> ProjectName.UATSetParameters.xml
> ProjectName.UATDeploy.cmd
> ProjectName.PRODSetParameters.xml
> ProjectName.PRODDeploy.cmd
> ProjectName.zip

任何帮助将不胜感激.

解决方法

查看Sayed Ibrahim Hashimi的博客和他创建的网络包nuget扩展.
NuGet包扩展了Visual Studio中的Web打包过程,使您能够创建可以发布到多个环境的单个包

Package once publish anywhere – 您需要查看它创建的powershell脚本,并使用适当的值从构建任务中调用它.

SAYED IBRAHIM HASHIMI Blog

今天关于asp.net – VB.Net IIf函数添加SqlParametervb向sql数据库中添加数据的介绍到此结束,谢谢您的阅读,有关.net – 是否需要在SqlParameter名称之前添加一个@、.net-4.0 – 如何将标记化参数添加到web.config文件中,以便它显示在SetParameters.xml中?、asp.net SqlParameter如何根据条件有选择的添加参数、asp.net – 从One Build任务创建多个SetParameters.xml等更多相关知识的信息可以在本站进行查询。

本文标签:

上一篇asp.net – 为特定页面指定MaxHttpCollectionKeys?(能为特定用户在web页面间实现跨页传值的对象是)

下一篇asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案