如何獲得SQL查詢計算的結果?使用.NET和Oracle讀取SQL查詢的最佳方法
說,有兩種情況」
CASE 1
RETURN "Process ok"
CASE 2
RETURN "Process failed"
這會從存儲過程返回。
這是讀這在.NET,C#(Windows窗體)的最佳方法是什麼?
如何獲得SQL查詢計算的結果?使用.NET和Oracle讀取SQL查詢的最佳方法
說,有兩種情況」
CASE 1
RETURN "Process ok"
CASE 2
RETURN "Process failed"
這會從存儲過程返回。
這是讀這在.NET,C#(Windows窗體)的最佳方法是什麼?
它給你使用DataReader
,如果你認爲你可以得到多條記錄,或ExecuteScalar
如果你只能得到一個值,沒有記錄,沒有多列,只是一個字符串或int ...
這裏如何調用存儲過程並獲得讀者然後讀取它的第一列:
using(var conn = new OracleConnection("Data Source=oracledb;User Id=UserID;Password=Password;"))
{
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "storedProcedurename";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(...);
conn.Open();
OracleDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
var yourResult = dr[0].ToString();
}
}
這取決於如果你調用存儲過程,或者如果你正試圖獲得重新設置一個記錄。
至於存儲過程,它可以將值分配給out
或inout
參數或生成記錄集。對於前者,您需要使用Direction屬性指定參數種類。至於後者,除了您需要將command.CommandType
設置爲CommandType.StoredProcedure以外,所有內容均可用作普通查詢。
一個典型的SQL查詢樣子:
using (var cmd = connection.CreateCommand())
{
cmd.CommandText = "SELECT something FROM YourTable";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["something"]);
}
}
}
至於數據庫連接我不建議您使用DbProviderFactory
生成它得到儘可能通用代碼可能:http://www.davidhayden.com/blog/dave/archive/2007/10/08/CreatingDataAccessLayerUsingDbProviderFactoriesDbProviderFactory.aspx
那你試試?顯示如何從您的C#請求查詢 –
http://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.71).aspx,這是一個更通用的問題的通用答案 –
如何使用DataReader並讀取返回的字符串? – Marco