当使用 AddWithKey 时,用于 SQL Server 的 .NET Framework 数据提供程序将 FOR BROWSE 子句追加到正在执行的语句。应该注意潜在的副作用,例如对 SET FMTONLY ON 语句的使用产生的干扰。有关更多信息,请参见“SQL Server 联机图书”。
FOR BROWSE 就是数据库进入了浏览模式。估计你的问题就是使用了AddWithKey。

解决方案 »

  1.   

    检查一下数据库数否有触发器,另update操作只要没有语法错误是不报错的
      

  2.   

    to iamafrog(我是青蛙)
    FOR BROWSE 我还是不懂,你说的那个AddWithKey。我去掉后还是如此。你能否帮我想个解决的方法,谢谢了
    to downsome()
    如何检查我的数据库是否有触发器啊。谢谢 
    to wkyjob(农民的儿子) 
    偶是绍兴人,呵呵。
      

  3.   

    你的代码太乱了,你是不是想插入数据,如果是,建议不用自己写
    SqlDataAdapter.InsertCommand 和 SqlDataAdapter.UpdateCommand,用SqlCommandBuilder多省事.
    string temp1="SELECT id,borrow_name,book_name FROM borrow";
    SqlDataAdapter Adapt = new SqlDataAdapter(temp1,Connect);
    DataSet Data= new DataSet();
    Adapt.MissingSchemaAction=MissingSchemaAction.AddWithKey;
    Adapt.Fill(Data,"borrow");//对表Data进行添加一个行的操作的
    dr=Data.Tables["borrow"].NewRow();
    dr["borrow_name"]="kulang1";
    dr["book_name"]="jijiss";
    Data.Tables["borrow"].Rows.Add(dr);SqlCommandBuilder cmicCb=new SqlCommandBuilder(Adapt);
    //增加这句InsertCommand和UpdateCommand
    //对表Data进行添加一个行的操作的
    dr=Data.Tables["borrow"].NewRow();
    dr["borrow_name"]="kulang1";
    dr["book_name"]="jijiss";
    Data.Tables["borrow"].Rows.Add(dr);
    //提交
    Connect.Open();
    Adapt.Update(Data,"borrow");
    Connect.Close();
      

  4.   

    你將DataRowVersion.Original設為DataRowVersion.Current
      

  5.   

    to  CMIC(大象) 
    没办法不得不自己写啊。问题是我其实操作的多张表不能使用SqlCommandBuilder,上面的代码我只是类似的写了错误代码。如果是原程序的代码的太长了。to zhbname(赤澜) 
    这样我也试过没用的。
      

  6.   

    to seesea125(雨天)
    我刚才想到了,和你想的一样,现在下班了,我打算晚上在试试。
      

  7.   

    去掉 AddWithKey 然后你在用SqlCommandBuilder。它就是对于多个表动态处理的。你只要写适配器的Selecte行了,insert和delete它会自动生成。但是如果你对Selecte、insert和delete有特殊要求,哪就得自己写了。
      

  8.   

    同意CMIC(大象),要不然就用村出过程吧,速度很快的:
    调用:
    OracleCommand cmd = new OracleCommand();
    cmd.CommandText = cmdtxt;
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = ( OracleConnection )DbOperator.Connection;
    //参数
    OracleParameter p1=new OracleParameter("v_id",OracleType.Char,16);
    p1.Direction=ParameterDirection.Output;
    cmd.Parameters.Add(p1);OracleParameter p2=new OracleParameter("v_B0105",OracleType.VarChar,70);
    cmd.Parameters.Add(p2);
    cdmd.
      

  9.   

    不好意思,还没写完:
    if(cmd.Connection.State!=ConnectionState.Open)
        cmd.Connection.Open();
    cmd.ExecuteNonQuery();
    cmd.Connection.Close();
    存储过程如下:
    create or replace procedure myproc(
    p1 in mytable.field1%type,p2 out mytable.field2%type)
    is
    v_id mytable.id%type;
    begin
       select my_squence.id into v_id from dual ;
       insert into mytable(id,field1) values(v_id,p1);
       p2:=v_id;
       return p2;
    end;
    end myproc;
      

  10.   

    其他的方法我都知道,但是都用不来,相信我,我都正确的尝试过,现在只能自己写Command
    ,现在初步估计是“id(自动增加的)”的问题,所以要另外创建表格才行,MSDN上我下班的时候也看到了类似这样的说明,本来打算晚上尝试的,但是还要做ASP.NET没时间,只能等明天尝试,希望是那个问题,如果是的话我会告诉大家,当然也希望碰到过这样问题的人能接着给点意见,同时感谢楼上那么兄弟的关照!
      

  11.   

    to seesea125(雨天) 
    可否在QQ上或者MSN上请教一下,QQ:28006753,MSN:[email protected]