解决方案 »

  1.   

    google了下,应该是字段名错了。PhotoCount, BH字段在数据库里都有吗?另外不确定access是不是大小写敏感,也尽量匹配一下。debug时看看sql的内容是什么?
      

  2.   

    SQL 语句不对
    Dug看看SQL语句是什么,直接拿到access里执行看看,应该是报一样的错从你下面的代码来看  textBox1.Text 应该是表的主键,同时也是一个文件夹的名称,你的SQL语句那么写,那么它应该是一个 数值类型的。你看看 textBox1.Text= dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString(); 这一句是不是没有赋上值,造成了textBox1.Text 为空的情况
          如果textBox1.Text 为空或者字符串类型的值,SQL的写法都是不正确的。
      

  3.   

    很费解你的UpdateDisplay方法。
    看上去像是重新提取数据,刷新DataGridView上的数据,但是却写个Update的Sql语句?这是要干什么呢?
      

  4.   

    Update语句,执行结果只会返回受影响的行数
    你Fill是想干啥
      

  5.   

    查询才应该将结果填充
    增,删,改,应该使用另一个返回结果是int型的函数去执行
      

  6.   

    +1之前没注意,使用 dataAdapter.Fill(dataSet, "tree");  执行SQL不对
    因为之前Display()已经Fill一次dataSet 中的tree表
    在MSDN中说明
    当使用后面的 Fill 调用来刷新 DataSet 的内容时,必须满足以下两个条件:                
    1.该 SQL 语句应该与最初用来填充 DataSet 的语句匹配。                
    2.必须存在键列信息。如果主键信息存在,则协调任何重复的行,并且这些重复行将只在与 DataSet 对应的 DataTable 中出现一次。可以通过 FillSchema(通过指定 DataTable 的 PrimaryKey 属性),或者通过将 MissingSchemaAction 属性设置为 AddWithKey 来设置主键信息。总之,第一次Fill的时候,tree表的结构已经形成了,第二次Fill,执行SQL语句返回的数据表结构必须和第一次对应起来。
    而Update语句返回受影响的行数,和第一次Select返回表结构无法对应
    再就是Fill 之前的语句都是Select 语句,不能用Update
      

  7.   

    你这样去执行,到底改没改,我也不确定,你需要自己去看到底改了没有
    正常应该是调用另一个方法去执行insert,update和delete,而不要用fill