c#中处理数据库中字段值的Null问题
来源:互联网 发布:网狐棋牌游戏源码 编辑:程序博客网 时间:2024/05/16 09:13
当数据表的字段值允许为空时,若在插入数据时没提供数值,则值就会默认是Null,这个Null和空字符串('')以及0都不同,Null表示“不知道”。
例如:select 1+0的结果是1,而select 1+Null的结果是Null;
select 'aa'+''的结果是'aa',而select 'aa'+Null的结果是Null;
C#中直接往数据库中插入Null是不行的,参数化查询时如果参数的值是Null,会提示未提供参数。C#提供了一个DBNull类,使用DBNull.Value来代替Null可以解决这个问题。
写的源代码如下:
//数据表test中的name、age字段设置了允许为空
object name, age;
if (txtName.Text.Length <= 0)// 判断是否有输入姓名
{
name = DBNull.Value;//DBNull表示不存在的值
}
else
{
name = txtName.Text;
}
if (txtAge.Text.Length <= 0)//判断是否有输入年龄
{
age = DBNull.Value;
//age = null; //将null直接赋值给age,执行SQL语句时会报错,提示未提供参数
}
else
{
age = txtAge.Text;
}
int height = Convert.ToInt32(txtHeight.Text);
string connStr = @"Data Source=.\SQLExpress;Initial Catalog=practice;User ID=sa;Password=381213";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "insert into test(name,age,height)values(@Name,@Age,@Height)";
cmd.Parameters.Add(new SqlParameter("@Name",name));
cmd.Parameters.Add(new SqlParameter("@Age", age));
cmd.Parameters.Add(new SqlParameter("@Height", height));
cmd.ExecuteNonQuery();
MessageBox.Show("插入成功");
}
}
反过来,从数据库中将Null值读取出来,也是使用DBNull.Value来判断。
string connStr = @"Data Source=.\SQLExpress;Initial Catalog=practice;User ID=sa;Password=381213";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from test";
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
DataTable table = dataset.Tables[0];
DataRow row = table.Rows[0];
string name;
int? age,height;
if (row["name"] == DBNull.Value)
{
name = null;
}
else
{
name = (string)row["name"];
}
if (row["age"] == DBNull.Value)
{
age = null;
}
else
{
age = (int)row["age"];
}
height = (int)row["height"];
MessageBox.Show("读取成功,姓名:"+name+",年龄:"+age+",身高:"+height);
}
}
- c#中处理数据库中字段值的Null问题
- C#三种判断数据库中取出的字段值是否为空(NULL) 的方法
- C#判断数据库中取出的字段值是否为空(NULL)
- iOS开发中后台返回null,<null>字段的处理
- oracle中Null字段的计算问题
- DB2中NULL字段的显示问题
- 使用新类型Nullable处理数据库表中null字段
- C#中往数据库插入/更新时候关于NUll空值的处理
- 在DataSet中处理字段中的NULL问题入门6
- oracle数据库中CLOB字段的处理问题
- java对数据库中NULL的处理
- Java对数据库中NULL的处理
- 嵌入式开发中对db2 null字段的处理
- 数据库中字段为null和空带来的麻烦
- 向数据库中插入默认值为null的字段
- 查询数据库中为null字段的数据
- Java中ACCESS数据库表中字段为“数字型”,如果其值为NULL时如何处理?
- 数据库字段中存在单引号的处理
- Android Frame动画实例
- 解决《windows 能连接cmcc 但是浏览器打不开登入界面》问题
- snprintf
- 40多个关于人脸检测/识别的API、库和软件
- Qt编程—去掉标题栏和设置窗口透明用法
- c#中处理数据库中字段值的Null问题
- 多项式时间算法
- android平台下使用点九PNG技术
- _stdcall,_cdecl区别
- oracle数据字典和动态性能视图简要说明
- Linux shell 脚本示例
- php高级工程师面试题
- JAVA_WEB Oracle 10g学习: PL/SQL应用程序性能调优
- 我的密码(一)