You can pass param to stored procedure by adding:
cmd.Parameters.AddWithValue(“@Name”, value);
So your code could be extended by adding parameters
argument with default value (to keep backward capability):
public DataTable executeSelectQuery(String sql, Dictionary<String,String> parameters = null)
{
getConnection();
try
{
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.CommandType = CommandType.StoredProcedure;
if (parameters != null)
{
foreach (var param in parameters)
{
cmd.Parameters.AddWithValue("@"+param.Key, param.Value);
}
}
// Create a DataAdapter to run the command and fill the DataTable
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
catch (Exception e)
{
throw e;
}
finally
{
connection.Close();
}
}
And call:
private void Form1_Load(object sender, EventArgs e)
{
var parameters = new Dictionary<String, String>() {{"param1", "paramValue1"}, {"param2", "paramValue2"}};
DataTable dt = Program.db.executeSelectQuery("spCustomerParam", parameters);
dataGridView1.DataSource = dt;
}
Links: How to call a stored procedure with output parameters?