我创建了一个学生信息查询的窗体,然后在窗体中加入了ListView控件,用来显示查询得到的学生各项信息,其中有以下几列要显示
学生姓名、学号,学生性别、学生年龄、学生住址、Email我的数据库中的设置是学生地址和邮箱是可以为NULL的,
现在就出现了一个问题,在我执行完查询语句后,在给每个变量赋值的时候,出现只要其中有一列为NULL的话,程序就报错,例如:
要查询一个名叫张瑞龙的同学的信息,但是这时这个学生的地址为NULL,当为他的地址赋值时就会出错,
代码如下:
//声明变量
string studentName;
string code;
string sex;
string age;
string address;
string email;
//创建SQL语句
string sql = string.format("SELECT StudentName,Code,Sex,Age,Address,Email FROM Students WHERE StudentName LIKE '张瑞龙'");
//创建Command对象
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
SqlDataReader dataReader; //定义一个DataReader对象
DBHelper.connection.Open(); //打开数据库连接
dataReader = command.ExecuteReader(); //执行查询命令
//为变量赋值
while(dataReader.Read())
{
string studentName = (string)dataReader["StudentName"];
……
string address = (string)dataReader["Address"]; //程序运行到此报错,如果数据库中的地址改为不为NULL,就不报错了,我想问下怎么修改,哪里错了}
学生姓名、学号,学生性别、学生年龄、学生住址、Email我的数据库中的设置是学生地址和邮箱是可以为NULL的,
现在就出现了一个问题,在我执行完查询语句后,在给每个变量赋值的时候,出现只要其中有一列为NULL的话,程序就报错,例如:
要查询一个名叫张瑞龙的同学的信息,但是这时这个学生的地址为NULL,当为他的地址赋值时就会出错,
代码如下:
//声明变量
string studentName;
string code;
string sex;
string age;
string address;
string email;
//创建SQL语句
string sql = string.format("SELECT StudentName,Code,Sex,Age,Address,Email FROM Students WHERE StudentName LIKE '张瑞龙'");
//创建Command对象
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
SqlDataReader dataReader; //定义一个DataReader对象
DBHelper.connection.Open(); //打开数据库连接
dataReader = command.ExecuteReader(); //执行查询命令
//为变量赋值
while(dataReader.Read())
{
string studentName = (string)dataReader["StudentName"];
……
string address = (string)dataReader["Address"]; //程序运行到此报错,如果数据库中的地址改为不为NULL,就不报错了,我想问下怎么修改,哪里错了}
解决方案 »
- 获取别人网站的信息
- 各位达人大家都什么时候用到了hashtable
- C#可以定制通用对话框吗?
- 这两种代码有何区别?
- 怎么通过串口接收单片机的数据并且显示(最好以16进制)
- . NET分布式构架技术专题
- C#2.0中使用SerialPort的问题
- 网站
- c#写的程序,要想在客户机器上运行,需要什么环境阿
- 如何在执行完一个事件之后刷新
- dbcommand.executreader返回datareader对象可能为null吗???
- 编译器错误消息: CS0115: : “ASP.admin_masterhead_masterhead_aspx.GetTypeHashCode()”: 没有找到适合的方法来重写
如果为空就给个空字符
不为空就从数据库中取出来
string address="";
if(null==dataReader["Address"])
{
address=" ";
}
else
{
address = (string)dataReader["Address"];
}
这样是否更好一点
判断时将Null放在前面好像就不会报空指针异常
string address =(null == dataReader["Address"]||DBNull.Value== dataReader["Address"]) ? string.Empty : (string)dataReader["Address"];
这样可能好些
不过这个问题不用那么麻烦,string address = dataReader["Address"] + ""; 就可以了
来判断这个字段是否为空
select isnull(address,'') as address从源头控制