你可以先把DataView的数据加入到一个DataTable里,然后通过SqlDataBuilder提交到数据库。

解决方案 »

  1.   

    我是想把该DataView中的数据和数据库中的表直接关联查询,直接使用是不能实现的,我想知道DataView经过怎样的处理可以和数据库中的物理表进行关联查询?楼上的,不知道你的方法可行么?能不能给我举个例子?
      

  2.   

    没道理。
    如果你的数据是来自一个数据库,那把你生成该dataview的sql联接上现在要查询的sql去查询完了.
    如果不是一个数据库,用你dataview与查询相关的数据生成一个sql条件就可以了.
      

  3.   

    首先,该DataView是别人给我的接口,我只能调用,不能修改,也不能改变它的返回类型;
    其次,该DataView是一个复杂的存储过程返回的,不是简单的SQL查询能够替代的。
      

  4.   

    ‘如果不是一个数据库,用你dataview与查询相关的数据生成一个sql条件就可以了’,我不太明白您的意思。我现在是用了一个笨方法凑合的,即把DataView中的数据遍历一遍,形成用‘,’分割的字符串,然后加入SQL的IN子句中,但是这种方法不适合大数据量的情况,而且很没有效率,现在不能忍受了,所以我想尝试改变!请大家多提宝贵意见!
      

  5.   

    yaopeng117(充电) 说的应该可以。
      

  6.   

    我觉得用dataset应该可以的,又相对比较简单
      

  7.   

    请yaopeng117(充电)给我举个例子详细说说思路可以么?例如数据库表A和DataView左连接,得到表A的记录,连接条件是A.cHumanID = (DataView中的cHumanID),请问如何作?一直听说DataSet是个小数据库,我如果把我的SQL语句中的其他表都导入DataSet,DataView也导入该DataSet,是不是有方法可以进行关联查询?
      

  8.   

    看看ado.net方面的内容,会很有帮助的.
      

  9.   

    假定之前有一个DataTable为DT,里面就是你的DataView填充的数据。SqlDataAdapter da=new SqlDataAdapter("select * from yourTbl",conn);
    //yourTbl为数据库中空表SqlCommandBuilder scb=new SqlCommandBuilder(da);
    DataSet ds=new DataSet();
    da.Fill(ds,"yourTbl");
      
    DataTable DTBL=ds.Tables["yourTbl"];DataRow[] TblDR=DT.Select();
    //通过数据行数组查找DT中的所有行for(int i=0;i<TblDR.Length;i++)
    {
     DataRow yourTbl=DTBL.NewRow();
     DetailRow[1]=(int)TblDR[i]["ID"];
     DetailRow[2]=(string)TblDR[i]["name"];
     DTBL.Rows.Add(yourTbl);
    }
    //向数据库中添加行,注意类型要要转换成跟数据库中一致da.Update(ds,"yourTbl");//更新数据库
    DT.Clear();//清空原来的DT,也就是你DataView的数据然后你就可以通过数据库来操作表的连接了。