private static void PrepareCommand(SqlCommand cmd,SqlConnection conn,string cmdText, SqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.Text;
if (cmdParms != null)
{
foreach (SqlParameter parameter in cmdParms)
{
if ( ( parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input ) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
}
不明白这段代码中的:
if ( ( parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input ) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
是什么意思?加上这个有什么用处?
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.Text;
if (cmdParms != null)
{
foreach (SqlParameter parameter in cmdParms)
{
if ( ( parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input ) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
}
不明白这段代码中的:
if ( ( parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input ) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
是什么意思?加上这个有什么用处?
解决方案 »
- 在aspx.cs中的事件里,如何触发“JavaScript”中的事件
- 遍历dataTable时进行判断,当值为" "||NULL时,不进入IF中,求解
- ASP中根据关键字段从数据库中搜索相关信息,在更改相应内容进行更新数据,求代码
- 刚学vb ASP.NET ,试写的一段文件上传代码,请大家指正!
- 购物车产品数量更改问题
- 急:用asp.net做了一个上传下载的东西,但下载下来的文件总比原文件大,这是怎么回事?
- 郁闷问题:关于.NET部署的问题,求高手帮忙!
- 那里有时间日期控件下载?不显示日期只显示年月的
- 谁能帮我解释这段代码?
- 能介绍本学习asp.net的书吗?
- 关于Session问题
- 请问我该如何该如何操作我的程序?
如果参数是输入输出双向参数
或者阐述是输入参数并且值为空
那么就把参数的值设成 DBNull.ValueC# 里面的 null 和 DBNull.Value 的区别主要是
后者专门用于指数据库里提交空值再说简单点,C# 里面的 null 和 SQL 语句里面的 null 本质上不是一个相同的值
这里替换一下入库更科学
不是太明白
如果不是执行存储过程,也有输入输出吗?
DBNull.Value提交空值是提交null还是""?
如果你需要多个返回值,可以使用输出参数
因为默认的返回值只能有一个
参数就没限制如果需要把 C# 里面的值传入到数据库,就必须要输入参数DBNull.Value 提交的值等同于 SQL 里面的 NULL
只是和 C# 里面的 null 不同
在C#里打印即不是null也不是""
StringBuilder strSql=new StringBuilder();
strSql.Append("insert into DMBlue_Blog_Users(");
strSql.Append("UserId,UserPassWord,Sex,Email,Oicq,DelFlag)");
strSql.Append(" values (");
strSql.Append("@UserId,@UserPassWord,@Sex,@Email,@Oicq,@DelFlag)");
SqlParameter[] parameters = {
new SqlParameter("@UserId", SqlDbType.VarChar,50),
new SqlParameter("@UserPassWord", SqlDbType.VarChar,50),
new SqlParameter("@Sex", SqlDbType.VarChar,2),
new SqlParameter("@Email", SqlDbType.VarChar,50),
new SqlParameter("@Oicq", SqlDbType.Int,4),
new SqlParameter("@DelFlag", SqlDbType.TinyInt,1)};
parameters[0].Value = _userInfo.UserId;
parameters[1].Value = _userInfo.UserPassWord;
parameters[2].Value = _userInfo.Sex;
parameters[3].Value = _userInfo.Email;
parameters[4].Value = _userInfo.Oicq;
parameters[5].Value = _userInfo.DelFlag;
reRows = new SQLHelper().ExecuteNonQuery(strSql.ToString(),parameters);
return reRows;上面这个要用下面这个来执行: public int ExecuteNonQuery(string SQLString,params SqlParameter[] cmdParms)
{
int rows = 0;
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, SQLString, cmdParms);
rows=cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch(System.Data.SqlClient.SqlException )
{
//throw new Exception(E.Message);
rows = -1;
}
catch(Exception )
{
//throw new Exception(E.Message);
rows = -1;
}
}
}
return rows;
}那么在什么情况下,我会用到DBNull呢?
谢谢回答
数据库有 A B C 三个字段
你让用户输入 A B
那么 C 就为空
如果 SQL 已经固定必须传入 C
你在传递到 SQL 时就用 DBNull.Value
如果 SQL 本身没写死 那么你完全不用管 C 只管 INSERT A, B 即可
C 会在记录增加时自动被赋 NULL
谢谢你在传递到 SQL 时就用 DBNull.Value这个怎么传成DBNull
我要让@c的值等于DBNull?
完整的看看 MSDN
SqlCommand 的例子