永发信息网

C#的有关异常的处理以及从数据库中删除某个

答案:3  悬赏:20  手机版
解决时间 2021-05-02 04:50
  • 提问者网友:两耳就是菩提
  • 2021-05-01 21:17

1、//下面是我要将数据库表 classmate中学号为num(varchar型)的学生的数据删除代码,但编译是出现转化为整型数据异常,因为我的学号是11位,麻烦高手帮我该一下使他能成功运行。还有帮我解释一下cmd.ExecuteNonQuery()方法。

conn.Open()

string sqlString = "delete from classmate where Number=" + num;
cmd.ExecuteNonQuery();

MessageBox.Show("学号:"+num+"学生的信息删除成功删除成功!");
conn.Close();

2、//下面是自定义的一个查找表 classmate中是否含学号为num的方法

其思想就是用SqlDataReader sdr = cmd.ExecuteReader();去读,然后判断他是否可读即是否为true 。不知道这样的想法对不对,麻烦高手帮我分析一下。因为我这句sdr.Read() == true会出现异常:从数据类型 nvarchar 转换为 numeric 时出错。

private bool isHad(string number)//判断是否存在
{
bool flag = false;
string sqlString = "select * from classmate where Number=" + number;
cmd = new SqlCommand(sqlString, conn);
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read() == true)
{
flag = true;
}
conn.Close();
return flag;
}

最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-05-01 21:26
问题1:将数据表中的学号字段 修改为long类型 即可 原因是超出int范围 int范围为: -2,147,483,647~+ 2,147,483,647 你11位的学号字段 应该采用long类型
问题2:
通过你的异常提示来看 应该是 sql查询语句中的number值 与数据表中number字段的类型不一致造成的
请检查下 还有 按您的思路去写 是可以的 但是您sdr.Read() 后忘记了关闭 应加上cmd.ExecuteReader(CommandBehavior.CloseConnection);
而且不建议这样去写 没有b必要 也正如楼上所说 没有效率
object result =cmd.ExecuteScalar();
if(result!=null)
{
return true;
}
即可
全部回答
  • 1楼网友:傲气稳了全场
  • 2021-05-01 22:55

string sqlString = "delete from classmate where Number=" + num; 这个错了,应该加上单引号的,因为num(varchar型),所以应写成:

string sqlString = "delete from classmate where Number=' " + num +" ';

第二个方法错误

if (sdr.Read() == true) { flag = true; } 既然你用了SqlDataReaer,那就应该知道

Read()方法不是布尔值类型的,所以sdr.Read()=true是错误的

  • 2楼网友:行路难
  • 2021-05-01 21:56

private bool isHad(string number)//判断是否存在 { bool flag = false; string sqlString = "select count(*) from classmate where Number=" + number; cmd = new SqlCommand(sqlString, conn);

conn.Open(); int n =(int) cmd.ExecuteScalar();

conn.Close();

if (n>0) return true; return flag; }

这样效率更高

1题的问题应该是你的数据已经超过了int型的范围了

-2147483648到2147483647

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯