我使用Oracle.DataAccess.Client
我ASP.Net應用與的Oracle數據庫工作執行使用Oracle ODP.Net一個更新語句。沒有幫助文檔MSDN對於ODP.Net和Oracle的文檔確實很糟糕。我無法找到這個簡單問題的答案。如何在C#
無法執行簡單的更新語句而無需構建dataset
對象並更新dataset
?
如何使用執行更新語句Oracle ODP.Net in C#?
我使用Oracle.DataAccess.Client
我ASP.Net應用與的Oracle數據庫工作執行使用Oracle ODP.Net一個更新語句。沒有幫助文檔MSDN對於ODP.Net和Oracle的文檔確實很糟糕。我無法找到這個簡單問題的答案。如何在C#
無法執行簡單的更新語句而無需構建dataset
對象並更新dataset
?
如何使用執行更新語句Oracle ODP.Net in C#?
我需要檢查的確切語法,但這裏是一些簡單的代碼,把我的頭頂部
using (OracleConnection con = new OracleConnection(...))
{
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "update table set col1 = :param1, col2 = :param2 where key = :keyValue";
cmd.Parameters.AddWithValue("param1", 1);
cmd.Parameters.AddWithValue("param2", "Text data");
cmd.Parameters.AddWithValue("keyValue", "1");
cmd.ExecuteNonQuery();
}
上面創建一個命令對象設置的命令,執行一個SQL Update語句,在這個例子我展示了一種設置參數化查詢的方法,你應該總是使用參數化查詢。一旦命令設置完畢,您只需撥打ExecuteNonQuery
即可執行該命令。
甜!謝謝!雖然我找不到「AddWithValue」。 ExecuteNonQuery是關鍵,我試過了一個參數化查詢,它工作。我想我可以從這裏即興創作。真的很感謝你的時間! – 2011-04-23 20:26:47
Karthik使用參數化查詢的優勢在於它爲您提供所有SQL注入保護。 – SurfingSanta 2015-07-23 23:40:29
和也!我只想修改一些東西來添加允許Oracle執行更新命令的事務控制: 'code' OracleCommand cmd = con.CreateCommand(); OracleTransaction oratrans = con.BeginTransaction(IsolationLevel.ReadCommitted); cmd.Transaction = oratrans; 。 。 。 cmd.ExecuteNonQuery(); oratrans.Commit(); 你的, – 2017-03-08 18:10:42
除@ Chris的回答外,這裏是OracleParameter類的文檔頁面,其中使用OracleCommand執行Update
s的示例代碼。
編輯:這是ODP.net documentation的入口點。
你提供的示例代碼的鏈接是關於如何使用OracleDataReader獲取數據,而不是如何更新數據(按照我最初的問題)。我已經瀏覽了ODP.net文檔,找不到更新的類似代碼示例。我希望MSDN已經記錄了這個:(。 – 2011-04-23 20:36:16
因此,經過一番調查和工作了一段時間,我發現我用來給連接命令添加一個新參數的方法如下。我沒有找到上一篇文章中提到的方法。請注意,我正在使用一個查詢對象,我正在傳遞值。
public Boolean InsertMethod(Query _query)
{
var success = false;
var queryString = string.Format(@"INSERT INTO TABLE(ID, OWNER, TEXT) VALUES (TABLE_SEQ.NEXTVAL,:OWNER, :TEXT)");
try
{
using (OracleConnection con = new OracleConnection(ConString))
{
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = queryString;
cmd.Parameters.Add("OWNER", _query.Owner);
cmd.Parameters.Add("TEXT", _query.Text);
int rowsUpdated = cmd.ExecuteNonQuery();
if (rowsUpdated > 0) success = true;
}
return success;
}
catch (Exception ex)
{
log.Error(ex);
throw;
}
}
看起來像你插入兩次。'cmd.ExecuteNonQuery();' – Halter 2017-01-23 20:32:46
你是對的,謝謝。它已被編輯。 – nshouppuohsn 2017-01-27 04:03:11
ODP.Net實現IDbCommand,IDbConnection和IDbDataAdapter爲什麼你不能用它們來準備和執行你的Update語句。 – adt 2011-04-23 18:11:32