2012-08-04 77 views
0

我用下面的代碼saving.Updating記錄到Oracle使用XML,保存數據在Oracle中

OracleConnection con = new OracleConnection(constr); 
con.Open(); 

// Create the command. 
OracleCommand cmd = new OracleCommand("", con); 
cmd.CommandText = "<?xml version=\"1.0\"?>\n" + 
    "<ROWSET>\n" + 
    " <MYROW>\n" + 
    " <FIELD1>2</FIELD1>\n" + 
    " <FIELD2>zafar</FIELD2>\n" + 
    " </MYROW>\n" + 
    "</ROWSET>\n"; 

// Set the XML save properties. 
KeyColumnsList = new string[1]; 
KeyColumnsList[0] = "FIELD1"; 
UpdateColumnsList = new string[1]; 
UpdateColumnsList[0] = "FIELD2"; 

cmd.XmlSaveProperties.KeyColumnsList = KeyColumnsList; 
cmd.XmlSaveProperties.UpdateColumnsList = UpdateColumnsList; 
cmd.XmlSaveProperties.RowTag = "MYROW"; 
cmd.XmlSaveProperties.Table = "testconn"; 
cmd.XmlSaveProperties.Xslt = null; 
cmd.XmlSaveProperties.XsltParams = null; 
rows = cmd.ExecuteNonQuery(); 

Console.WriteLine("rows: " + rows); 

Field2專欄中,我想用select user from dual。我無法保存當前的數據庫用戶。

+0

有沒有原因,你不能只使用正常的INSERT/UPDATE語句? – 2012-08-04 20:07:44

+0

我想一次保存/更新多個記錄。 – Zafar 2012-08-04 20:09:20

+0

爲什麼你想這麼做?標準更新/插入是否有一些合理的性能問題? – 2012-08-04 21:13:41

回答

0

CommandText中的數據結構假定所有值都是文字。沒有辦法讓它識別內部查詢或表達式。如果您想要查詢user,則必須單獨執行並將其合併到數據中。這可能與XsltXsltParams子句可能有關。