时间:2021-07-01 10:21:17 帮助过:1人阅读
public override void AcquireConnections(object Transaction) {
//获取 以及设置 Connection 连接 connMgr = this.Connections.DestConnStr; sqlConn = (SqlConnection)connMgr.AcquireConnection(Transaction); }
public override void ReleaseConnections() { connMgr.ReleaseConnection(sqlConn); }
public int ExecuteNonQuery(string sqlStr, CommandType cType, SqlParameter[] parms) { int result = 0; try { SqlCommand cmd = new SqlCommand(); cmd.Connection = sqlConn; //直接使用 数据连接 cmd.CommandType = cType; cmd.CommandText = sqlStr; if (parms != null) { cmd.Parameters.AddRange(parms); } result = cmd.ExecuteNonQuery(); } catch (Exception ex) { result = 0; throw ex; } return result; }
最后别忘了 Despose
public override void PostExecute() { base.PostExecute(); /* * Add your code here */ if (sqlConn != null) sqlConn.Dispose(); }
补充一下, 在dts 包 脚本组件 输入输出项的时候, 新增的输出列,插入到目标列, 如果脚本里面不对 输出列进行赋值, 输出列是会有默认值的
datetime 的默认值 为 0000-00-00
字符串 默认 为 空字符串( 而不是null)
然后要使 数据库的目标插入的时候 是 null,要对 输入输入列进行 赋值,
例如:
Row.synctime_IsNull = true;
补充2: 在执行存储过程, 使用 datetime 类型的参数, 传入到oledb , 因为设置的类型 为 datetime , 所以有默认值,
这或许是一个bug, 这个值不会发生改变, 就算外面发生了改变, 传入到存储过程里面, 也还是原来的初始值.
解决这个问题的方案是: 将字段类型甚至为 string,而不是datetime , 然后 变量设置为 字符串表达式
比如 更新的时候去系统运行的当前时间 , 使用系统时间, 字符串函数去转换一下
SSSI里面的坑真多啊
[SSIS] 在脚本里面使用数据库连接字符串进行查询等处理, 入坑
标签: