kao
还说自己是‘新手’我才是真正的新手,我都不知道自己该问哪方面,自己才可以学会。

解决方案 »

  1.   

    string strUpdate = "Update 各县基本情况 Set 面积="+intChinese+",人口数="+intMath+",邮政编码="+intEnglish+" Where 名称='"+strName+"'";
    --------------------------你在debug的时候,查看你的strUpdate 语句,然后将他放在你的数据库中执行。很有可能是你的intChinese,intMath,intEnglish中有数据为空,然后你的sql语句就不对了。
      

  2.   

    代码有点长了,不好意思。不过的确是初学C#。string strUpdate = "Update 各县基本情况 Set 面积="+intChinese+",人口数="+intMath+",邮政编码="+intEnglish+" Where 名称='"+strName+"'";
    OleDbCommand MyComm = new OleDbCommand(strUpdate,MyConn);
    MyComm.ExecuteNonQuery();上述代码中的查询语句在数据库中执行是正确的,关键是上面的第三条语句。一旦在IE中执行就会出现下面的错误
    “操作必须使用一个可更新的查询。 
      说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
      异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。”
      

  3.   

    在string strUpdate上设置断点,调试一下看看,strUpdate能否在sql查询器中正常执行,估计是你的strUpdate有问题
      

  4.   

    我在ACCESS中打开数据库执行strUpdate保存的查询语句,一切正常。但是在IE中执行时为什么提示不对呢?
    是否是由于MyComm.ExecuteNonQuery的执行还需要其他参数,或是MyComm.ExecuteNonQuery的定义不正确?
      

  5.   

    string strUpdate = "Update 各县基本情况 Set 面积="+intChinese+",人口数="+intMath+",邮政编码="+intEnglish+" Where 名称='"+strName+"'";intChinese是整型,不能直接连字符串吧
    尝试用 intChinese.ToString()试试
      

  6.   

    Page_Load中不要MyConn.Open();這句.ICollection CreateTable()着个函数改成
    ICollection CreateTable()
    {
    MyConn.Open();
    string strSel = "select * from 各县基本情况";
    DataSet ds = new DataSet(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn);
    MyAdapter.Fill(ds,"Score"); return ds.Tables["Score"].DefaultView;
    MyConn.Close();
    }
      

  7.   

    在update里MyConn.Open();
    MyComm.ExecuteNonQuery();
    MyConn.Close();
      

  8.   


    最好用OleDbDataAdapter 来完成这种操作
      

  9.   

    我上次也遇到过,你的磁盘格式是不是NTFS格式的啊。如果是的话,看看MDB文件的权限是不是EVERYONE了。。不知道是不是这个原因,我的是这样解决的。呵呵,因为我也是菜鸟
      

  10.   

    呵呵,我刚解决这个问题
    是你的操作权限不够乐,最简单的就是将.mdb文件属性中everyone的权限改为完全控制了
    下面是相关资料你嚼嚼吧:)
    有几个主要的错误原因:
    这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为
    ADO由于以下的几个原因而不能够写数据库造成的。
    1。最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。 
    要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。
    当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为
    Jet需要在该目录建立一个.ldb文件。
    2。第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。
    SQL = "UPDATE Products Set UnitPrice = 2;"
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Mode = 3 '3 = adModeReadWrite
    Conn.Open "myDSN"
    Conn.Execute(SQL)
    Conn.Close
    注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
    3。还有可能是在ODBC管理器中将该DSN的只读选项选中。
    4。你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新
    这两个表中各自字段。
    5。当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000)
    中的查询时,在执行这个查询是会出现该错误。
      

  11.   

    问题解决了,多谢.
    芭芘:我还想问一下,你所说的打开CONN时,要先设置CONN.MODE。但是C#下没有定义Mode属性,怎样设置?
      

  12.   

    那是用asp编程时才会用到吧,
    我也初学了