C# 存储过程使用示例
如何在连接字符串中使用存储过程而不是查询。您可以建议我进行编码吗?您需要定义sql命令(在本例中是对存储过程的调用),然后连接到数据库,发送查询并接收结果 以后别忘了关闭连接 网上有一个很好的教程 我无法在这里描述整个过程,如果您有更详细的问题,请回来询问-这就是Stackoverflow的目的:)给您C# 存储过程使用示例,c#,sql,C#,Sql,如何在连接字符串中使用存储过程而不是查询。您可以建议我进行编码吗?您需要定义sql命令(在本例中是对存储过程的调用),然后连接到数据库,发送查询并接收结果 以后别忘了关闭连接 网上有一个很好的教程 我无法在这里描述整个过程,如果您有更详细的问题,请回来询问-这就是Stackoverflow的目的:)给您 string spName = "stored_proc_name"; string idParameterValue = "someId"; using (SqlConnection con
string spName = "stored_proc_name";
string idParameterValue = "someId";
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand command = new SqlCommand(spName, connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@Id", idParameterValue));
connection.Open();
IDbDataAdapter da = new SqlDataAdapter();
da.SelectCommand = command;
// (*) Put here a code block of the actual SP execution logic
// There are different ways of SP execution and it depends on
// return result set type, see below
}
}
(*)选择适当的方法:
// Store output result set in the DataSet
DataSet ds = ExecuteQuery(da);
bool successfull = cmd.ExecuteNonQuery() == 1;
辅助方法
private static DataSet ExecuteQuery(IDataAdapter da)
{
DataSet ds = new DataSet("rawData");
da.Fill(ds);
ds.Tables[0].TableName = "row";
foreach (DataColumn c in ds.Tables[0].Columns)
{
c.ColumnMapping = MappingType.Attribute;
}
return ds;
}
public static class DataReaderExtensions
{
public static Int32 GetInt32(this IDataReader rdr, string fieldName)
{
int ordinal = rdr.GetOrdinal(fieldName);
return !rdr.IsDBNull(ordinal) ? rdr.GetInt32(ordinal) : Int32.MinValue;
}
}
有用链接:
private static DataSet ExecuteQuery(IDataAdapter da)
{
DataSet ds = new DataSet("rawData");
da.Fill(ds);
ds.Tables[0].TableName = "row";
foreach (DataColumn c in ds.Tables[0].Columns)
{
c.ColumnMapping = MappingType.Attribute;
}
return ds;
}
public static class DataReaderExtensions
{
public static Int32 GetInt32(this IDataReader rdr, string fieldName)
{
int ordinal = rdr.GetOrdinal(fieldName);
return !rdr.IsDBNull(ordinal) ? rdr.GetInt32(ordinal) : Int32.MinValue;
}
}