真的没有人会么?  难道没有人来帮我?
目前进展情况:
在  sql 里建了三个表   并且标明了表之间的关系 即公司---部门---员工
也能够用  .net里的xml读出来  但是读出来的时候  老是出现datareader错误  (我是用datareader读出来的)   即datareader不能关   关掉了  用while又读不出来  望高手来看看  顺便接分

解决方案 »

  1.   

    visio有一个数据库ER关系图,你可以把你数据库表导入到ER关系图中,然后设定其中关系。
    sqldatareader如果在循环中实现,就一定要先关闭,在生成,建议用dataset实现
      

  2.   

    我是用datareader呀 用while  循环   datareader是嵌套的   不知道如何关  请指点
    请看代码:
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "Server=(local);database=department;Trusted_connection=yes;";
    SqlCommand cmd1 = new SqlCommand("select * from company",conn);
    conn.Open();
    SqlDataReader reader = cmd1.ExecuteReader();
    XmlDocument xDoc = new XmlDocument();
    XmlElement rootelem = xDoc.CreateElement("Data");
    xDoc.AppendChild(rootelem);
    while(reader.Read())
    {

    XmlElement elem = xDoc.CreateElement(reader.GetString(1));
    rootelem.AppendChild(elem); SqlCommand cmd2 = new SqlCommand("select * from depart where cid="+reader.GetInt32(0),conn);
    reader.Close();
    SqlDataReader r2 = cmd2.ExecuteReader();
    while(r2.Read())
    {
    XmlElement e2 = xDoc.CreateElement(r2.GetString(1));
    elem.AppendChild(e2);
    }
    r2.Close();
    reader = cmd1.ExecuteReader();
    reader.NextResult();
    }

    MessageBox.Show(xDoc.InnerXml);
      

  3.   

    还有一层 datareader还没加呢
      

  4.   

    看了你的代码,知道你对sqldatareader的理解不是很深入。
    有一点说明:sqldatareader是一个只读的,向前的,有状态的对象。
    换句话说,如果一个sqldatareader实例被创建了,它所引用到的SqlConnection对象
    就被它独占,其他的实例不能再引用这个SqlConnection对象。
    所以,要解决你遇到的问题有2种方式
    1,用无状态的dataset对象代替sqldatareader(dataset对象实例被创建,就和SqlConnection短开了连接)
    2,每个sqldatareader实例引用不同SqlConnection对象,引用完后记住应释放资源。
    如下简单的举个例子
      

  5.   

    SqlConnection conn1 = new SqlConnection();
    SqlConnection conn2 = new SqlConnection();
    SqlConnection conn3 = new SqlConnection();
    conn1.ConnectionString = "Server=(local);database=department;Trusted_connection=yes;";
    conn2.ConnectionString = "Server=(local);database=department;Trusted_connection=yes;";
    conn3.ConnectionString = "Server=(local);database=department;Trusted_connection=yes;";
    SqlCommand cmd1 = new SqlCommand("select * from company",conn1);
    conn1.Open();
    conn2.Open();
    conn3.Open();
    SqlDataReader reader = cmd1.ExecuteReader();
    XmlDocument xDoc = new XmlDocument();
    XmlElement rootelem = xDoc.CreateElement("Data");
    xDoc.AppendChild(rootelem);
    while(reader.Read())
    {

    XmlElement elem = xDoc.CreateElement(reader.GetString(1));
    rootelem.AppendChild(elem); SqlCommand cmd2 = new SqlCommand("select * from depart where cid="+reader.GetInt32(0),conn2);
    reader.Close();
    SqlDataReader r2 = cmd2.ExecuteReader();
    while(r2.Read())
    {
    XmlElement e2 = xDoc.CreateElement(r2.GetString(1));
    elem.AppendChild(e2);
    }
    r2.Close();
    }
      

  6.   

    谢谢   请问 可以帮我回答一下提出的问题吗?  数据如何转化? 我用xml只是自己想到的
    有没有更好的办法?  或者用.net存成xml格式的文件?  又如何导入到visio中?
      

  7.   

    visual studio 2003 有这种功能
      

  8.   


    DataSet dsW=new DataSet();
    dsW.Tables.Add(this.CollectionOprateQuest);
    dsW.WriteXml(strXmlPath+"Library.xml",XmlWriteMode.IgnoreSchema);
    dsW.Tables.Remove(this.CollectionOprateQuest);
    dsW.Tables.Add(this.CollectionOprateGut.Copy());
    dsW.WriteXml(strXmlPath+"OperationGut.xml",XmlWriteMode.IgnoreSchema); DataSet有 WriteXml的()和dsW.GetXml()方法
      

  9.   

    To chenwei518(makelive) :vs2003有何种功能?能说具体一点么?  是不是直接操纵visio文件的类?
      

  10.   

    谢谢   各位   我正在研究上边的code
      

  11.   

    1.在visio中可以直接导入:
    .建数据库模型图->反向工程->选择数据源(先建立ODBC数据源)
    如果导入不成功看一下visio给你的提示,一般都能解决。
    2.没有。
    3.最好不要使用XML,反向工程形成的数据库模型图中有数据库关系、函数、存储过程等对象,还可以将visio中做的改变与数据库保持同步。
      

  12.   

    to大象:   必须要求在.net环境下操作 或者用.net生成一个文件在 visio里打开也行 你听说过么?  我没有听说过。  而且visio也是第一次使用  谢谢。
      

  13.   

    你所说的是vs.net的反向工程。如果你想时下实现这个功能,必须安装Visio 2003 (vs.net第3张盘)
    装完后打开vs.net在项目工具条下有一个visio uml,然后点反向工程即可。
    这样生成uml类图并不能完全表现你的对象关系,还需要你自己去画出use case,class等框图。
      

  14.   

    如果你想建立数据库模型图,参考 CMIC(大象)的说法。
    对vision不懂可以看visio的帮助,也可以参考vision2003自带的例子。
    打开visio2003,点文件--新建--浏览绘图示例,你可以看到很多简单visio绘图示例
      

  15.   

    你那个反向工程是uml图  没有办法呀  我这个是将 sql server里的数据用.net导入到visio里用图表示出来   如何操作  请明示?
      

  16.   

    用ctrl+alt+s把SQL服务器打开
    里面自动可以连接
    很方便
    就想在一个平台上操作一样
      

  17.   

    好像visio有企业版的,只有企业版的对.net的支持更强大
      

  18.   

    to coolbug2000(coolbug) 
    文件--新建--数据库--ER Source Model
    然后点数据库--点反向工程---即可以通过反向工程从现有数据库中提取数据库框架
      

  19.   

    看了MSDN的一篇文章,VISIO2003才支持类似功能 。
    哪位给个地址吧。