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()”就是一个空值。。。