【急】使用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#