private void button1_Click(object sender, EventArgs e)
{
string a = textBox1.Text.Trim();
string b = textBox2.Text.Trim();
if (Validate())
{ string sql = string.Format("insert into 员工 values('{0}','{1}','{2}')", a, b);
if (UpdateDataTable(sql))
{
MessageBox.Show("员工信息登记成功", "提示", MessageBoxButtons.OK);
}
else
{
MessageBox.Show("员工信息登记失败", "提示", MessageBoxButtons.OK);
} }
}
public static bool UpdateDataTable(string sql)
{
string ConnectString = ConfigurationManager.ConnectionStrings["dataconstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(ConnectString))
{
try
{
con.Open();
SqlCommand comm = new SqlCommand(sql, con
if (comm.ExecuteNonQuery() > 0) {
return true;
}
else
{
return false;
}
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
} }请问这段代码那个地方错了,当我没有输入数据时,那些空格也可以插入到数据库中,但是我在数据库中的数据都是不能空的,不知道为什么插入到数据库时是空的?请高手帮我解释一下!希望高手能帮助找出代码中的错误
{
string a = textBox1.Text.Trim();
string b = textBox2.Text.Trim();
if (Validate())
{ string sql = string.Format("insert into 员工 values('{0}','{1}','{2}')", a, b);
if (UpdateDataTable(sql))
{
MessageBox.Show("员工信息登记成功", "提示", MessageBoxButtons.OK);
}
else
{
MessageBox.Show("员工信息登记失败", "提示", MessageBoxButtons.OK);
} }
}
public static bool UpdateDataTable(string sql)
{
string ConnectString = ConfigurationManager.ConnectionStrings["dataconstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(ConnectString))
{
try
{
con.Open();
SqlCommand comm = new SqlCommand(sql, con
if (comm.ExecuteNonQuery() > 0) {
return true;
}
else
{
return false;
}
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
} }请问这段代码那个地方错了,当我没有输入数据时,那些空格也可以插入到数据库中,但是我在数据库中的数据都是不能空的,不知道为什么插入到数据库时是空的?请高手帮我解释一下!希望高手能帮助找出代码中的错误
少指定参数了吧?
还有你判断null时,最好用String.IsNullOrEmpty("");
{
string a = textBox1.Text.Trim();
string b = textBox2.Text.Trim();
if (Validate())
{ string sql = string.Format("insert into 员工 values('{0}','{1}'", a, b);
if (UpdateDataTable(sql))
{
MessageBox.Show("员工信息登记成功", "提示", MessageBoxButtons.OK);
}
else
{
MessageBox.Show("员工信息登记失败", "提示", MessageBoxButtons.OK);
} }
}
public static bool UpdateDataTable(string sql)
{
string ConnectString = ConfigurationManager.ConnectionStrings["dataconstr"].ConnectionString;
using (SqlConnection con = new SqlConnection(ConnectString))
{
try
{
con.Open();
SqlCommand comm = new SqlCommand(sql, con
if (comm.ExecuteNonQuery() > 0) {
return true;
}
else
{
return false;
}
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
} }
,刚才写错代码了请问这段代码那个地方错了,当我没有输入数据时,那些空格也可以插入到数据库中,但是我在数据库中的数据都是不能空的,不知道为什么插入到数据库时是空的?请高手帮我解释一下!希望高手能帮助找出代码中的错误
object b = textBox2.Text.Trim()==string.Empty?DBNull.Value:textBox2.Text.Trim();注意DBNull.Value才是真正的数据库的空,其他的只不过是空白字符
{
bool condition = false;
if(string.IsNullOrEmpty(this.textBox1.Text))
{
condition = false;
}
else if(string.IsNullOrEmpty(this.textBox2.Text))
{
condition = false;
}
else
{
condition = true;
} return condition;
}
然后把这个方法放在UpdateDataTable(string sql)方法之前if(checkInfo())
{
if(UpdateDataTable(sql))
{
//判断
}
}
string b = textBox2.Text.Trim();这里a,b就是
object a = textBox1.Text.Trim()==string.Empty?DBNull.Value:textBox1.Text.Trim();
object b = textBox2.Text.Trim()==string.Empty?DBNull.Value:textBox2.Text.Trim();你插入的可能是空白字符
我试过了,还是不可以,DBNull.Value : textBox1.Text.Trim()这里出错
string b = textBox2.Text.Trim();if(a.Length==0 || b.Length==0)
MessageBox.Show("值不能为空", "提示", MessageBoxButtons.OK);在保存数据到数据库中的时候,如果你的a是"",其实插入的数据是一串空白字符,你应该可以看到数据库中保存的是一长串的空格,而不是NULL。而数据库中对应的NULL,在C#中对应的是DBNull.Value。
也就是说,如果你保存的是DBNull.Value,那么才会触发数据库中的数据不能为空的验证。
object p1,p2;
string a = textBox1.Text.Trim();
string b = textBox2.Text.Trim();
if(a==string.Empty) p1=DBNull.Value; else p1=a;
if(b==string.Empty) p2=DBNull.Value; else p2=b;string sql = string.Format("insert into 员工 values('{0}','{1}')", p1, p2);看看还会不会插入了
由于你用的是string.Format的拼字符串的方式,我不保证DBNull.Value在拼的时候会不会被转义了。但如果你用参数化的方式写sql语句的话,DBNull.Value肯定是会提示不能为空的。
if(a!="" && b!="")
{
if (Validate())
{
//这里不变
}
}
else
{
MessageBox.Show("输入不能为空!", "提示", MessageBoxButtons.OK);}
再试试看!
或者自己在调试的时候多试几个方法就出来了(不用盯着数据库看,太低率了!)