2011-10-03 74 views
0

如何獲得SQL查詢計算的結果?使用.NET和Oracle讀取SQL查詢的最佳方法

說,有兩種情況」

CASE 1 
RETURN "Process ok" 
CASE 2 
RETURN "Process failed" 

這會從存儲過程返回。

這是讀這在.NET,C#(Windows窗體)的最佳方法是什麼?

+2

那你試試?顯示如何從您的C#請求查詢 –

+1

http://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.71).aspx,這是一個更通用的問題的通用答案 –

+2

如何使用DataReader並讀取返回的字符串? – Marco

回答

0

它給你使用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(); 
    } 
} 
0

這取決於如果你調用存儲過程,或者如果你正試圖獲得重新設置一個記錄。

至於存儲過程,它可以將值分配給outinout參數或生成記錄集。對於前者,您需要使用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