2011-02-17 101 views
0

我正在建立一個ado.net包裝,可以連接任何數據庫(由ADO.Net支持)基本上從SQl,Oledb,Odbc,甲骨文,Sqlite等我實施連接和所有其他基本的東西。但是在我的查詢需要參數從其他級別傳遞的時候,我被困在那裏。我知道爲此目的,我們使用IDataParameterCollection或IDbDataParameters等,但不知道實現的方式。如何使用多客戶端支持ADO.Net參數

所以請你們幫我一把。這將是一個很大的幫助。

OR

可以在短說,我需要傳遞將在所有類型的客戶端所使用的參數的一個獨立的方式,無論是的SqlClient,OracleClient的或任何其他客戶端。

謝謝!

+0

是否有任何人誰得到了我的答案還是我的問題是含糊不清。我沒有見過SO成員這麼慢...請任何意見或任何反饋,我急切地等待解決方案...請提供一些解決方案...... – 2011-02-17 10:17:39

回答

2

好的。在用戶側:

SqlParameter s1 = new SqlParameter(); 
s1.Direction = ParameterDirection.Input; 
s1.ParameterName = "s1"; 

SqlParameter s2 = new SqlParameter(); 
s2.Direction = ParameterDirection.Input; 
s2.ParameterName = "s2"; 

this.ExecuteScalar("query", new IDataParameter[] { s1, s2 }); 

而在另一邊:

public int ExecuteScalar(string commandText, IDataParameter[] param) 
     { 
     IDbCommand cmd = connection.CreateCommand(); 
     cmd.CommandText = commandText; 
     foreach (IDataParameter p in param) 
      cmd.Parameters.Add(p); 
     } 
2

(cmd是所述的DbCommand實例)

DbParameter p = cmd.CreateParameter(); 
p.Direction = ParameterDirection.Input; 
p.Value = the_value; 
p.ParameterName = the_param_name; 
p.DbType = ... 

cmd.Parameters.Add(p); 

然後,查詢是像select * from table where field = ?。但是,要小心訂單或創建參數。

?小丑應該是獨立的。

+0

幾個查詢 1.我使用IDbCommand而不是的DbCommand。 – 2011-02-17 10:19:45