C#传DataTable到SQL server到存储过程
程序员文章站
2022-03-23 19:08:03
//通过各种方式获取一个数据库连接字符串 string str = ConfigurationManager.ConnectionStrings["HidistroSqlServer"].ConnectionString; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("OrderItems",SqlDbType.Structu......
一、SqlClient类库
C#端
//通过各种方式获取一个数据库连接字符串
string str = ConfigurationManager.ConnectionStrings["HidistroSqlServer"].ConnectionString;
SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("OrderItems",SqlDbType.Structured)
};
paras[0].Value = dt;
using (SqlConnection sqlconn = new SqlConnection(str))
{
sqlconn.Open();
SqlCommand sqlcommand = sqlconn.CreateCommand();
sqlcommand.CommandType = CommandType.StoredProcedure;
sqlcommand.CommandText = "cp_InsertOrderItems";
sqlcommand.Parameters.AddRange(paras);
sqlcommand.ExecuteNonQuery();
sqlconn.Close();
}
数据库端
在代码执行前需要到数据库创建一个自定义数据类型OrderItems到存储过程,直接声明输入参数:
@OrderItems OrdersItemsTableType readonly
然后内容是:
Insert into table (xx,xx) Select xx,xx from @OrderItems
可以自己再补充一点返回影响行等。
二、Microsoft.Practices.EnterpriseLibrary
C#端
System.Data.Common.DbCommand sqlStringCommand = this.database.GetStoredProcCommand("cp_InsertOrderItems");
SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("flag",SqlDbType.Int),
new SqlParameter("OrderItems",SqlDbType.Structured)
};
paras[0].Direction = ParameterDirection.ReturnValue;
paras[1].Value = dt;
sqlStringCommand.Parameters.AddRange(paras);
this.database.ExecuteNonQuery(sqlStringCommand);
return Convert.ToInt32(sqlStringCommand.Parameters[0].Value);
数据库端
同上
本文地址:https://blog.csdn.net/Acsxionian/article/details/107324540
推荐阅读