System.Data.SqlTypes.SqlNullValueException: 数据为空。不能对空值调用此方法或

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System.Data.SqlTypes.SqlNullValueException: 数据为空。不能对空值调用此方法或相关的知识,希望对你有一定的参考价值。

string sql = "select [Name],[Address],[WebAddress],[Telephone],[Description],[LeftTopPic],[LeftBottomPic] from [t_Customer] where [CustomerID] = " + ctid;
SqlDataReader reader = sqlhelper.GetReader(sql, CommandType.Text, sqlhelper.conn);
string[] readstring = new string[7];
while (reader.Read())

for (int i = 0; i < 7; i++)

readstring[i] = reader.GetString(i);


reader.Close();
return readstring;

这是怎么回事?

因为你从SQL中读取的值为(null), 你先要判断从SQL中读取的数据是否为空(null). 如果为空(null), 自己赋值为0或其他字符就可以了. 参考技术A 首先你使用一维数组来储存结果肯定是不行的,这样只能保存最后一条记录。如果一定要用数组的话,应该使用二维数组,建议使用DataSet。

而要避免发生这个错误,只要在赋值语句外面嵌套一个if判断来保证取出的数据不是NULL空值。

类似楼上这样:

for (int i = 0; i < 7; i++)

if(!reader.IsDBNull(i))

readstring[i] = reader.GetString(i);

参考技术B IsDBNull
就像楼上兄弟说的,有可能读出的数据为NULL,可以这样改:

方法一:
while (reader.Read())

for (int i = 0; i < 7; i++)

if (reader.IsDBNull(i))

continue;

readstring[i] = reader.GetString(i);


方法二:

string sql = "select ISNULL([Name],''),ISNULL([Address],''),ISNULL([WebAddress],''),ISNULL([Telephone],''),ISNULL([Description],''),ISNULL([LeftTopPic],''),ISNULL([LeftBottomPic],'') from [t_Customer] where [CustomerID] = " + ctid;

方法三:
while (reader.Read())

for (int i = 0; i < 7; i++)

readstring[i] = reader[i].ToString();

本回答被提问者采纳

亚马逊AWS免费套餐EC2安装centos连接登录并创建root

前言:刚开始使用亚马逊的AWS的免费套餐EC2,由于个人习惯使用centos系统,所以果断安装,但是AWS为了安全性,默认禁止用户使用root账户,导致安装配置环境各种问题。所以我把从安好系统后遇到的一些基本问题整理出来,方便大家更快的入手!

涉及到的问题: 
1. 如何在aws上安装centos系统 
2. 如何删除创建好的vps服务器 
3. 安装的centos系统后,如何在windows上远程登录ec2 
4. 在ec2上创建root账户,并且使用root账户登录

第1块:aws上怎么安装centos之类的系统

太复杂的就不说了,简明扼要一张图

技术分享

第2块:vps服务器创建好后如何删除

也是挺简单的,服务器上”右键“,点”终止“,看图说话吧。有的朋友估计会说删了半天还在,我只能说多等会吧,在等的过程中你可以重新创建,一个月750小时的配额,按31天算才744小时,偶尔搞下没问题,不扣费!

技术分享

第3块:创建好系统后如何登录服务器

当时我的心情可以用一个词形容”蛋疼“,很疼,本来就是半把刷子,普通的root登录还行,一下搞个publickey,完全蒙掉了。

方法其实很简单,官方在你创建完成后会给中文教程,用putty工具远程连接,但是看起来很麻烦。我用的xshell登录。

这里要说下,不同系统的登录账户是不一样的,大部分是ec2-user,centos的登录账户名字就是centos。看图说话

技术分享

技术分享

ec2上创建root账户,切换登陆之

接上边,登录进系统后,开始开始操作

1、创建root的密码,输入如下命令:

sudo passwd root
  • 1

2、切换到root账号,命令如下:

su root
  • 1

3、编辑亚马逊aws-ec2主机的ssh登录方式,查找PasswordAuthentication no,把no改为yes,命令如下:(如果你要说不会用vi编辑,我也没办法了!)

vi /etc/ssh/sshd_config
  • 1

4、重启sshd服务,看命令

sudo /sbin/service sshd restart
  • 1

5、切换root账号

su root
  • 1

6、给账户centos添加密码(其它系统的是ec2-user)

passwd centos
  • 1

7、至此结束,可以用root和最开始设置的root密码登录服务器了,登录地址还是公有DNS

完了

暂时就到这里了,有什么问题大家可以留言,我知道的会解答的。

最后一句:虽然本文的知识是我各种查询和揣摩测试出来的,不敢说太大功劳,本着分享的精神希望能帮到更多的人,所以觉得好的欢迎转载,但请尊重我的劳动成果,转载时著名出处,谢谢!

Ater至上!

以上是关于System.Data.SqlTypes.SqlNullValueException: 数据为空。不能对空值调用此方法或的主要内容,如果未能解决你的问题,请参考以下文章