日期:2014-05-17  浏览次数:20550 次

怎样把变量的值,赋值到sql
INSERT INTO IP_LocalAllot(PID, DeptName, StartAddress, EndAddress, AllotDate, Remarks) VALUES (@T_ID, @T_Name, @StartAddress, @EndAddress, @AllotDate, @Remarks)


T_ID T_Name是自定义的变量,已经在后台赋值
 string T_ID = Label1.Text.Trim();
 string T_Name = Label2.Text.Trim(); 

但是运行时候出错,说INSERT插入语句不能将空值插入到DeptName,不知道哪里的问题,请指教,谢谢

------解决方案--------------------
INSERT插入语句不能将空值插入到DeptName 就是有的值是空的 而数据库里是非空

亲 调试下啊
------解决方案--------------------
你是怎么执行的sql?通过sqlcommand?
C# code

SqlCommand myComm = new SqlCommand();

  myComm.CommandText = "SELECT * FROM UserInfo WHERE UserName = @UserName ";
// 这里就是传参
  myComm.Parameters.Add( "@UserName", yourValue );

------解决方案--------------------
string sql="INSERT INTO IP_LocalAllot(PID, DeptName, StartAddress, EndAddress, AllotDate, Remarks) VALUES (@T_ID, @T_Name, @StartAddress, @EndAddress, @AllotDate, @Remarks)" ;
ExecuteCommand(sql,
new SqlParameter[]{
 new SqlParamter("@T_ID",T_ID),
 new Sqlparamter("@T_Name",T_Name),
 .....
}
)




public int ExecuteCommand(string sql, params SqlParameter[] pars)
{
SqlConnection sqlConnection = new SqlConnection(_connstr);
SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection);
sqlCommand.Parameters.AddRange(pars);
HToOpen(sqlConnection);
int count = sqlCommand.ExecuteNonQuery();
sqlCommand.Parameters.Clear();
HToClose(sqlConnection);
return count;
}
------解决方案--------------------
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into ChannelList(");
strSql.Append("ChannelNO,ChannelClass,curStatus,Area,Remark)");
strSql.Append(" values (");
strSql.Append("@ChannelNO,@ChannelClass,@curStatus,@Area,@Remark)");
strSql.Append(";select @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@ChannelNO", SqlDbType.VarChar,20),
new SqlParameter("@ChannelClass", SqlDbType.VarChar,20),
new SqlParameter("@curStatus", SqlDbType.VarChar,20),
new SqlParameter("@Area", SqlDbType.VarChar,20),

new SqlParameter("@Remark", SqlDbType.Text)};
parameters[0].Value = 赋值1;
parameters[1].Value = 赋值2;
parameters[2].Value = 赋值3;
parameters[3].Value = 赋值4;

parameters[4].Value = model.Remark;

object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
if (obj == null)
{
return 1;
}
else
{
return Convert.ToInt32(obj);
}
------解决方案--------------------
楼主 能不能把你后台的代码贴出来
------解决方案--------------------
很明显是DeptName不能为空,你插入时可能是空值:1首先看看你T_Name的取值是不是为空;2看看T_Name是否和@T_Name参数对应上了
------解决方案--------------------
解决思路:
1.调试跟踪一下T_ID ,T_Name 看看是否有值
2.将你的跟踪出来的sql放倒数据库中去执行一下看看是否报错

这样子很容易就找到问题的所在,应该很好解决的。
------解决方案--------------------
这个问题以前常碰到,都是粗心大意把代码写错了,使得SQL无法获得要赋的值,再仔细检查一下吧。。。
也有可能你提交过去的“Label2.Text.Trim()”就是一个空值。。。