问题一:
我想将xml传给sqlserver存储过程来操作,有谁会的举个例子,最好能详细一点,怎么读取xml文档赋给一个string.
问题二:
在网上看到一个获取本机MAC地址的方法,但是我根本找不到ManagementClass这个类,也用了using System.Management;在MSDN上看到确实有这个类,但是就是代码里找不到,我用的是VS2008,是不是已经取消这个类了?
string s = "", mac = "";
        //
        //name
        //
        string hostInfo = Dns.GetHostName();        //
        //IP
        System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
        for (int i = 0; i < addressList.Length; i++)
        {
            s += addressList[i].ToString();
        }
        //
        //mac
        //        ManagementClass mc;
        mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
        ManagementObjectCollection moc = mc.GetInstances();        foreach (ManagementObject mo in moc)
        {
            if (mo["IPEnabled"].ToString() == "True")                mac = mo["MacAddress"].ToString();
        }
        //txtName.Text = hostInfo;
        //txtIp.Text = s;
        Response.Write(""+ mac+"");

解决方案 »

  1.   

    存储过程里,不用事务的提交和回滚,全部在C#程序里做. 这个是可以控制的.多个表更新,调用这些更新表的C#方法,都传递同一个事务(Trans),然后在C#里,进行Commit Or RollBack
      

  2.   

    在你的项目中添加引用,
    然后你在.net的选项卡里边找.有一个System.Management的项(其实是个dll).把他添进去你就能用了
      

  3.   

    在项目引用上添加System.Management。
      

  4.   

    更新多个数据集行不,我试过不能用事务。
      #region  将数据集批量更新到数据库
            public static DataSet UpdateDs(DataSet changedDs, string tableName,string sql)
            {
                using (SqlConnection connection = new SqlConnection(connStr))
                {
                    //SqlTransaction myTrans = connection.BeginTransaction(); //使用New新生成一个事务
                    SqlDataAdapter da = new SqlDataAdapter(sql, connection);
                    //da.SelectCommand.Transaction = myTrans;
                    try
                    {
                        SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(da);
                        da.Update(changedDs, tableName);
                        changedDs.AcceptChanges();
                        //myTrans.Commit();
                        return changedDs;//返回更新了的数据库表 
                    }
                    catch (Exception ex)
                    {
                        //myTrans.Rollback();
                        throw new Exception(ex.Message);
                    }
                }
            }
            #endregion
      

  5.   

    CREATE PROCEDURE dbo.usp_InsertManyRows
    @XMLDOC varchar(8000)
    AS
    declare @xml_hndl int
    --prepare the XML Document by executing a system stored procedure
    exec sp_xml_preparedocument @xml_hndl OUTPUT, @XMLDOC
    --insert into table
    Insert Into CodeSamples
    (
    Name
    )
    Select
    IDToInsert
    From
    OPENXML(@xml_hndl, '/items/item', 1)
    With
    (
    IDToInsert nvarchar(200) '@id'
    )
    GOprivate void Button3_Click(object sender, System.EventArgs e)
    {

    StringBuilder sb = new StringBuilder(); 
    sb.Append("<items>");  // Gets the selected rows in the datagrid 
    foreach(DataGridItem dgi in myDataGrid.Items) 
    {
    CheckBox myCheckBox = (CheckBox) dgi.Cells[2].Controls[1];  // Check to see if the CheckBox is checked or not
    if(myCheckBox.Checked == true)
    {
    // Make the string here 
    sb.Append("<item id=\""); 
    sb.Append(dgi.Cells[0].Text); 
    sb.Append("\">"); 
    sb.Append("</item>"); 

    } } sb.Append("</items>"); 

    Database db = DatabaseFactory.CreateDatabase(); 
    DBCommandWrapper insertCommandWrapper = db.GetStoredProcCommandWrapper("usp_InsertManyRows"); 
    insertCommandWrapper.AddInParameter("@XMLDOC",DbType.String,sb.ToString());  try 

    db.ExecuteNonQuery(insertCommandWrapper); 
    Label1.Text = "Data Inserted"; 

    catch(Exception ex) 
    {
    Label1.Text = ex.Message; 
    }


    }
      

  6.   

    更新数据集那里没有带事务的方法?那你可以用ExcuteNonQuery(command,trans)来更新.
    然后在把更新后的数据查出来,这里也要传递事务,要不是查不出来的.
      

  7.   

    StreamReader sr =File.Open(Server.MapPath("test.xml"),FileMode.Append,FileAccess.Read);
    怎么会报类型转换错误,我看过别人都这样写的。
      

  8.   


    FileStream fs = File.Open(Server.MapPath("test.xml"),FileMode.Append,FileAccess.Read); 
      

  9.   

    08有专门针对XML的数据类型,可读写,读出来就是STRING类型的
      

  10.   

    谢谢大家参与,问题已经解决,结贴:
    问题一:只能通过存储过程实现,SqlCommandBuilder本身包含事务,但其缺点在于无法同时操作多个记录集。
            xml读成文本下面方法可以。
            StreamReader sr = new StreamReader(Server.MapPath("test.xml"));
            string str = sr.ReadToEnd();