在C#中调用存储过程是一种常见的数据库交互方式,它可以帮助你执行复杂的数据库操作。
确保数据库中已经定义了所需的存储过程。存储过程可以封装复杂的SQL查询、更新、删除等操作,通过参数传递数据。
使用SqlConnection
对象来建立与数据库的连接。连接字符串应包含服务器地址、数据库名以及认证信息。
SqlCommand
对象创建一个SqlCommand
对象,并将CommandType
设置为CommandType.StoredProcedure
,这表明你将执行一个存储过程。同时,指定存储过程的名称。
如果存储过程需要参数,使用Parameters.AddWithValue
方法添加参数。确保参数名称和类型与存储过程中定义的一致。
根据存储过程的类型(查询、更新、删除等),使用ExecuteReader
、ExecuteScalar
或ExecuteNonQuery
方法执行存储过程。
根据执行的方法类型,处理返回的结果。例如,使用SqlDataReader
遍历查询结果集。
使用try-catch
块处理可能发生的异常,以确保程序的健壮性。
确保关闭数据库连接和释放资源,以避免内存泄漏。using
语句可以自动处理资源清理。
SQLUSE [bzscada]
GO
/****** Object: StoredProcedure [dbo].[sp_save_material] Script Date: 10/3/2022 6:54:44 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[sp_save_material](
@mlfb nvarchar(50),
@material_no nvarchar(50)
)
as
insert into wms_material(material_no,mlfb,description) values(@material_no,@mlfb,'')
C#private void btnSp_Click(object sender, EventArgs e)
{
string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString();
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
SqlCommand sqlcom = new SqlCommand();
sqlcom.Connection = conn;
sqlcom.CommandType = CommandType.StoredProcedure;
sqlcom.CommandText = "sp_save_material";
sqlcom.Parameters.Add(new SqlParameter("@mlfb", "TEST"));
sqlcom.Parameters.Add(new SqlParameter("@material_no", "TEST123"));
sqlcom.ExecuteNonQuery();
}
}
带返回的存储过程
C#private void btnSpReturn_Click(object sender, EventArgs e)
{
string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString();
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
SqlCommand sqlcom = new SqlCommand();
sqlcom.Connection = conn;
sqlcom.CommandType = CommandType.StoredProcedure;
sqlcom.CommandText = "sp_find_material";
sqlcom.Parameters.Add(new SqlParameter("@mlfb", "TEST"));
SqlParameter pRet = new SqlParameter("@totalcount", SqlDbType.Int, 4); //定义返回值参数
pRet.Direction = ParameterDirection.Output;
sqlcom.Parameters.Add(pRet);
DataSet ds = new DataSet();
SqlDataAdapter daMain = new SqlDataAdapter();
daMain.SelectCommand = sqlcom;
daMain.Fill(ds);
DataTable dt = ds.Tables[0];
var count = pRet.Value;
}
}
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!