小妹分数不多,谢谢各位好心人帮助了。代码如下:private void button1_Click(object sender, EventArgs e)
        {
            try
            {                for (int n = 0; n < datagridview1.RowCount; n++)
                {
                    if (datagridview1[0, n].Value != null && datagridview1[1, n].Value != null && datagridview1[2, n].Value != null && datagridview1[3, n].Value!=null)//datagridview1有四列,判断是否为空
                    {
                        try
                        {
                            SQL s = new SQL();//SQL是自己定义的一个数据库操作类,这里是为了连接数据库这一句应该没问题,我在别的地方大量使用
                            
                            string tempTime = tempStr;//tempStr是public类型,从datagridview1_Click里面传递过来的,记录鼠标点击了哪一行                            string sqlStr = "delete from my_table where storeTime= '" + tempTime.ToString() + "'";//storeTime是数据库表中的一列,就是记录文件保存时刻的,是varchar(50)类型
                            
                            //以下是SQL类里面的操作,下面这几句都没有问题,在程序中别的地方大量使用
                            SqlConnection conn = new SqlConnection(s.ConnectionString);
                            conn.Open();
                            SqlCommand command = new SqlCommand(sqlStr, conn);
                            command.ExecuteNonQuery();
                            command.Dispose();
                            conn.Close();
                            conn.Dispose();
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                    }
                    else
                        continue;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        
        
        
private void datagridview1_Click(object sender, EventArgs e)
{
    tempStr = this.datagridview1.SelectedCells[2].Value.ToString();//要取的是第3列
}

解决方案 »

  1.   

    把try catch去掉 看下那句报错
      

  2.   

    dataGridView1[0, n].Value!=null好像不能判断

    !DbNull.Value.Equals(dataGridView1[0, n].Value)
      

  3.   

    检查datagridview1[0, n],datagridview1[1, n],datagridview1[2. n]等是否存在,断点看看那句报错
      

  4.   

    “未将对象引用设置到对象实例”,这类问题是一种很简单的问题,无非就是null值!
    你断点调试,一步步F10走,很容易发现错误
      

  5.   

    我怀疑这个'" + tempTime.ToString() + "'";//为null,直接tostring导致错误。
      

  6.   

    private void datagridview1_Click(object sender, EventArgs e)
    {
      tempStr = (this.datagridview1.SelectedCells[2].Value==null?" ":this.datagridview1.SelectedCells[2].Value.ToString());//要取的是第3列
    }
      

  7.   

    你可以设置一个断点,然后单步调试,然后就可以找到问题。你可以从这句话查起:
    string tempTime = tempStr;//tempStr是public类型,从datagridview1_Click里面传递过来的,记录鼠标点击了哪一行
      

  8.   

    小妹妹幸苦了,这种异常一般都是因为是空值,null