c# - 如何修改对象 SqlParameter 类型的 DbType 值
问题描述
我有一个像这样定义的变量object[] parameters = new object[0];
在运行一些代码后,它将存储一些 SqlParameter 值。
问题是当我扩展值时,如果数据类型仅为字符串,我希望将 DbType 更改为 AnsiString。如下图所示。如果值为int,则不会修改数据类型。
那么如何迭代parameters
以改变它呢?我试过
foreach(var item in parameters)
{
item.DbType
}
但正在出错。
解决方案
收集 SqlParameters 的最佳做法是创建 List,在执行命令后,SqlParameters 将具有 Sql Query 的正确值。
所以你可以创建一个 SqlParameters 列表,你可以在执行后处理它。
创建 Sql 参数的示例:
cmd.Parameters.Add("FromID", SqlDbType.Int).Value = FromID;
cmd.Parameters.Add("ToID", SqlDbType.Int).Value = ToID;
cmd.Parameters.Add("User", SqlDbType.VarChar, 255).Value = User;
new SqlParameter("Name",[Value]){ SqlDbType = SqlDbType.VarChar, Size = 1000 }
SqlCommand中插入Sql参数列表示例
private Dictionary<string, SqlParameter> RunSqlStringCommand(string sqlString, List<SqlParameter> sqlParameters)
{
try
{
using (Database.Connection)
{
Database.Connection.Open();
var cmd = Database.Connection.CreateCommand();
cmd.CommandText = sqlString;
cmd.CommandType = CommandType.StoredProcedure;
foreach (var item in sqlParameters) cmd.Parameters.Add(item.Value);
cmd.ExecuteReader();
Database.Connection.Close();
return sqlParameters;
}
}
catch (Exception)
{
throw;
}
}
执行 Sql 参数后,如果它们具有输出功能,则它们具有来自过程的插入值。
推荐阅读
- unix - 在实用程序节点上安装 puppet
- ruby-on-rails - 如何手动包含remotipart js?
- python - 在 PyCharm 中为 ipython 配置终端仿真器
- javascript - 在 react 的 useState 中插入正则表达式无效
- async-await - 如何使用量角器和 browser.wait 每次都给出相同的结果?
- asp.net-mvc - Identity Server 4 在 azure 上更改了我的重定向 uri
- sql - 动态选择中的标识符无效
- sql - 按累积时间间隔将行分组
- pytorch - 使用 pytrorch masked_select 时如何保留 2D(或更多)形状
- scala - org.http4s.client 带有标题和 UriForm 的帖子