手冊說,ExecuteScalar方法應該像使用:如何創建數組的DbParameter []
public T ExecuteScalar<T>(
string commandText,
CommandType commandType,
params DbParameter[] parameters
)
但是我怎麼創建的參數數組?我需要提供我的存儲過程2個參數。
手冊說,ExecuteScalar方法應該像使用:如何創建數組的DbParameter []
public T ExecuteScalar<T>(
string commandText,
CommandType commandType,
params DbParameter[] parameters
)
但是我怎麼創建的參數數組?我需要提供我的存儲過程2個參數。
儘管您可以在不創建數組的情況下傳遞可變數量的參數,但如果您要動態創建可變數量的參數,則該數組就是您的朋友。
var parameters = new[]{
new SqlParameter(){ ParameterName="foo", Value="hello" },
new SqlParameter(){ ParameterName="bar", Value="World" }
};
x.ExecuteScalar<int>(commandText, commandType, parameters);
這兩個答案都很好,但我更喜歡這一個多一點。感謝大家! – Tys
params關鍵字意味着您可以指定不同數量的參數(因此從1到[非常]無窮大)。
您只需調用這樣的方法: ExecuteScalar<SomeType>("Command!", CommandType.SomeCommandType, dbParameter1, dbParameter2);
的parameters
參數有params
keyword。這意味着,你不必明確創建數組,但可以通過一個可變數量的參數的方法:
x.ExecuteScalar(commandText, commandType, parameter1, parameter2);
但是,如果你願意,你可以顯式地創建數組並把它傳遞給方法如下:
DbParameter[] parameters = new DbParameter[] { parameter1, parameter2 };
x.ExecuteScalar(commandText, commandType, parameters);
的DbParameter是一個抽象類 - 但你可以實例化派生類型。
如果您正在使用SQL Server它的SqlParameter:
DbParameter[] parameters = new DbParameter[2];
parameters[0] = new SqlParameter("param1", 123456);
parameters[1] = new SqlParameter("param2", "abcdef");
這是一個即時的「索引超出範圍」異常...應該是'parameters [1]' – Nyerguds
你能提供一個鏈接到該手冊? [DbCommand.ExecuteScalar](http://msdn.microsoft.com/en-us/library/system.data.common.dbcommand.executescalar.aspx)沒有參數。 – dtb