2011-04-12 126 views
0

我希望在CLR存儲過程中使用加密API。CLR存儲過程

我創建了一個CLR存儲過程和寫的select語句

SqlConnection conn = new SqlConnection(); 
conn.ConnectionString = "Context Connection=true"; 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = conn; 
cmd.CommandText = @"select * from Employee"; 

SqlDataReader rdr = cmd.ExecuteReader(); 

現在,我想使用它以加密形式存儲在其中,我要使用的數據庫的員工總數來篩選結果密碼學方法。

現在我堅持如何去從SqlDataReader過濾記錄。

我希望返回格式爲SqlDataReader,因爲要從CLR存儲過程返回多個記錄,有一個方法SqlContext.Pipe.Send(),此方法只接受SqlDataReader對象。

請指導我。

回答

0

我正在查看類似的問題,我想在返回結果之前進行一些操作。 我可以看到目前唯一的方法是使用:

// Note you need to pass an array of SqlMetaData objects to represent your columns 
// to the constructor of SqlDataRecord 

SqlDataRecord record = new SqlDataRecord(); 

// Use the Set methods on record to supply the values for the first row of data 
SqlContext.Pipe.SendResultsStart(record); 

// for each record you want to return 
// use set methods on record to populate this row of data 

SqlContext.Pipe.SendResultsRow(record); 

然後調用SqlContext.Pipe.SendResultsEnd時,即可大功告成。

如果有更好的方法我也想知道!

+0

而不是在執行命令後過濾記錄,我寫了一個CLR函數,它會爲我做解密。我會在我的where語句中使用這個CLR函數。因此,我會得到我可以直接發送的過濾記錄。 – Maks 2011-04-15 13:16:37