using (SqlConnection conn = new SqlConnection(connectionString))
            {
                string sql = "update MyTable2 set 成绩=成绩+10 where 姓名='张三玉k的萨芬'";
                //创建SqlCommand实例,并设置SQL语句和使用的连接实例
                SqlCommand cmd = new SqlCommand(sql, conn);
                listBox1.Items.Clear();
                try
                {
                    conn.Open();
                    //将执行SQL语句影响的记录数赋值给number
                    int number = cmd.ExecuteNonQuery();
                    listBox1.Items.Add(string.Format("修改了{0}条记录", number));
                    cmd.CommandText = "select 成绩 from mytable2 where 姓名='张三玉'";
                    int fen = (int)cmd.ExecuteScalar();
                    MessageBox.Show(fen.ToString());
                }
                catch (Exception ex)
                {
                   // listBox1.Items.Add(string.Format("修改记录失败:{0}", ex.Message));
                    MessageBox.Show(ex.Message);
                }平时我们在窗体用select查where的后面的条件,如果where的后面的条件不成立,是返回null
可是在上面的程序中,如果我不用try--catch程序中将提示出错,为啥不是返回个null

解决方案 »

  1.   

    int fen = (int)cmd.ExecuteScalar(); 如果返回结果不是1行1列的数据会抛异常。
      

  2.   

    string sql = "update MyTable2 set 成绩=成绩+10 where 姓名='张三玉k的萨芬'";
     int number = cmd.ExecuteNonQuery();
    是不是上面的以后抛出异常,我表中的姓名是张三玉
      

  3.   


    update 除非语法错误,否则不会抛异常,没有符合条件的话返回0。
    你可以debug下,看看哪抛异常。
      

  4.   

    或者说我在表里存了fid,fparent等等,有些行的fparent为空,有些行的fparent不为空,我用这个语句select * from table where fparent=0 and fid=1;(假设fid为1的fparnt为空),如果平时我们直接使用是查出NULL,可是在程序中我们使用是抛出异常,因为fid其fparent根本不存在??????
      

  5.   

    注掉这句看看 int number = cmd.ExecuteNonQuery();