当前位置:编程学习 > C#/ASP.NET >>

【急】使用DataSet将XML文件写入到oracle sys.xmlytpe字段中,这代码问题在哪里?为什么写进去是空的?

表结构:
create table E_TEST
(
  ID   NVARCHAR2(100) not null,
  NAME NVARCHAR2(100),
  XML  SYS.XMLTYPE
);
其中ID 为主键
c#代码如下:
目前就是在测试使用dataset处理XMLTYPE,datareader方法已经实现了
oracle11g 字符集US7ASCII  这种字符集使用 ExecuteNonQuery()方法时中文会出现乱码现象,所以用dataset测试。这样写进去的XML字段为空的,哪里写错了吗?

string connectionString = "Data Source =testascii;Persist Security Info=True;User ID=common;Password=common";
            string SQLString = "select t.id,t.name,t.xml.getclobval() xml from e_test t where rownum=0";
            string xmlString = "<root>钓鱼岛是中国的</root>";
            XmlDataDocument xmldoc = new XmlDataDocument();
            xmldoc.LoadXml(xmlString);
            
            //创建连接并打开
            Oracle.DataAccess.Client.OracleConnection conn = new Oracle.DataAccess.Client.OracleConnection(connectionString);
            conn.Open();

            OracleXmlType xmltype = new OracleXmlType(conn, xmldoc);

            Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand(SQLString, conn);
            Oracle.DataAccess.Client.OracleDataAdapter ad = new Oracle.DataAccess.Client.OracleDataAdapter(cmd);
            Oracle.DataAccess.Client.OracleCommandBuilder bd = new Oracle.DataAccess.Client.OracleCommandBuilder(ad);

            //填充
            DataSet ds = new DataSet();
            ds.AcceptChanges();
            ad.Fill(ds,"E_TEST");

            ds.Tables[0].Columns[2].DataType = typeof(OracleXmlType);
            DataRow dr = ds.Tables[0].NewRow();
            
            dr[0] = DateTime.Now.ToString();
            dr[1] = "钓鱼岛是中国的";
            dr[2] = xmltype;
            ds.Tables[0].Rows.Add(dr);
            ad.Update(ds, "E_TEST");

            //DataSet ds2 = new DataSet();
            //ds2.Tables.Add("E_TEST");
            //ds2.Tables[0].Columns.Add("ID", typeof(string));
            //ds2.Tables[0].Columns[0].DataType = typeof(OracleXmlType);
            //ds2.Tables[0].Columns.Add("NAME", typeof(string));
            //ds2.Tables[0].Columns.Add("XML", typeof(OracleXmlType));
            //DataRow dr2 = ds2.Tables[0].NewRow();
            //dr2[0] = DateTime.Now.ToString();
            //dr2[1] = "钓鱼岛是中国的";
            //dr2[2] = xmltype;
            //ds2.Tables[0].Rows.Add(dr2);


            conn.Close(); --------------------编程问答-------------------- 除 --------------------编程问答--------------------
有没有高手在啊
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,