数据库中Null表示不知道
需求:如果没输姓名,则说明姓名是“不知道”,因此是Null
如果没输入年龄,则年龄是Null,而不是0
Null不是'',Null也不是0
三个的区别:string类型有空是‘’,不知道Null,int类型只能是0.
- 查询表中所有的数据
- 查询LoginName等于空,查询名字为空的一栏
- 查询LoginName等于不知道的一列
- 查询LoginName等于不知道的一列
- 查询ErrorTimes等于0
如果给的参数的值为“不知道”则其实是没有给该参数赋值
1 //添加数据的时候,判断用户是否未填,未填在数据库中表示NULL。NULL和“”,0表示的意思不一样。 2 private void btnAdd_Click(object sender, RoutedEventArgs e) 3 { 4 //DBNull.Value是数据库中的NULL,所以不可以直接拿来和其他类型的数据比较。 5 string num = textBox1.Text; 6 string name=textBox2.Text; 7 string pwd=textBox3.Text; 8 string error=textBox4.Text; 9 //“num.Length <= 0”长度小于0,是防御性编程。10 //"object objid"设置object类型就可以任意指向了。11 object objid;12 //判断用户是否输入,未输入的在数据库中表示NULL。13 if (num.Length <= 0)14 {15 //object指向DBNull.Value16 objid = DBNull.Value;17 }18 else19 {20 //object指向字符串21 objid = num;22 }23 object objname;24 if (name.Length <= 0)25 {26 objname = DBNull.Value;27 }28 else29 {30 objname = name;31 }32 object objpwd;33 if (pwd.Length <= 0)34 {35 objpwd = DBNull.Value;36 }37 else38 {39 objpwd = pwd;40 }41 object objerror;42 if (error.Length <= 0)43 {44 objerror = DBNull.Value;45 }46 else47 {48 objerror = error;49 }50 int add = SqlHelper.ExecuteNonQuery(@"insert into Table_2 values(@Id,@LoginName,@LoginPwd,@ErrorTimes)",51 new SqlParameter("@Id",objid ),//这边想赋值NULL,是.net赋值,必须是DBNull.Value才可以。52 new SqlParameter("@LoginName", objname),53 new SqlParameter("@LoginPwd",objpwd),54 new SqlParameter("@ErrorTimes",objerror));55 if(add>0)56 {57 MessageBox.Show("Success");58 }59 }
1 private void btnNull_Click(object sender, RoutedEventArgs e) 2 { 3 DataTable dt = SqlHelper.ExecuteDataSet("select * from Table_2 where Id='501B1197-C823-48CF-922C-023B68056444'").Tables[0]; 4 DataRow row = dt.Rows[0]; 5 //读取的值如果在数据库中是NULL,则读取的时候是DBNull.Value; 6 //读取的值如果在数据库中是"",则读取的时候是“” 7 string loginname; 8 if (row["LoginName"] == DBNull.Value) 9 {10 loginname = null;11 }12 else13 {14 loginname = (string)row["LoginName"];15 }16 //int类型,bool类型等都不是null,要转换成可空类型。17 int? errortime;18 if (row["ErrorTimes"] == DBNull.Value)19 {20 errortime = null;21 }22 else23 {24 errortime = (int)row["ErrorTimes"];25 }26 }