数据库批量操作中SqlParameter参数传递的问题
数据库批量操作
比如会写:update T_AdminUsers set IsEnabled=@IsEnabled where Id in (@ids)
然后再SqlParameter("@isd","1,2,3"),
但这样是不行的,原因是什么呢,找啊找,找啊找,为什么每次都是费了老半天时间排除各种原因后才想起来最可能的原因
。
最后想可能是SqlParameter的机制问题,于是查看SqlParameter的重载,它可以处理多个object值,可以处理数组,但就是不认识"1,2,3"。
但办法是有的:像这样http://blog.csdn.net/yenange/article/details/17653213,将"1,2,3"分割,再重写了sql语句;
挺巧妙的办法,但考虑到我自己的情况,最后的处理方式为:
"update T_AdminUsers set IsEnabled=@IsEnabled where Id in ("+ids+")",
同时为了防止SQL注入漏洞攻击,手动筛查ids的内容:
执行如下转换:"1,2,3"->字符串数组->int数组->"1,2,3",
在字符串数组->int数组的转换过程中可以确保输入的只有数字
数据库批量操作中SqlParameter参数传递的问题的更多相关文章
- C# 数据库批量插入数据之 —— SqlBulkCopy、表值参数
创建了一个用来测试的Student表: CREATE TABLE [dbo].[Student]( [ID] [int] PRIMARY KEY NOT NULL, ) NULL, ) NULL, [ ...
- sql数据库批量替换dedecms内容关键字
之前写了一篇dedecms后台批量替换文章中的关键词,这边我们介绍一下用sql数据库批量替换dedecms内容关键字,当然要求你对数据库比较熟悉,修改前请自行做好备份. 1.更改文章中的内容 upda ...
- innodb数据库批量转换表引擎为MyISAM
2013.0106 innodb数据库批量转换表引擎为MyISAM 来源:本站原创 PHP, 数据库, 系统技术 超过488名童鞋围观 1条评论 <?php //连接数据库 $host='lo ...
- Mysql MyISAM数据库批量转换表引擎为Innodb
Mysql MyISAM数据库批量转换表引擎为Innodb 最近在做事物处理需要把表结构都改为带有支持事物的Innodb引擎格式, 把里面数据库 用户名.密码 等信息修改为你自己的,放在网站下运行即可 ...
- 金蝶KIS&K3助记码SQL数据库批量刷新
金蝶KIS&K3助记码SQL数据库批量刷新 用的次数不多,就没有写入存储过程或者触发里面了,可以自行实现. 第一步选择对应账套的数据库,执行下面的命令,这个是一个函数. go if exist ...
- SQL:数据库批量插入数据
测试中有些功能要求有足够的数据进行测试,当输入字段较多时通过页面添加很慢.业务只关联单个数据库表可以通过数据库批量插入数据 批量插入数据示例: declare @i int--声明变量 --变量初始化 ...
- 数据库过滤操作中 != 或者 <> 指定操作数并不能改匹配到NULL值
数据库过滤操作中 != 或者 <> 指定操作数并不能改匹配到NULL值
- SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原
原文:SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原 --作业定时压缩脚本 多库批量操作 DECLARE @DatabaseName NVARCHAR(50) DECLARE @ ...
- MySQL数据库迁移与MySQL数据库批量恢复
目录 一.MySQL数据库迁移或备份 1. 了解使用InnoDB引擎创建数据库所产生的文件 2. 迁移数据库步骤 1. 从A服务器迁移至B服务器 2. MySQL重装并导入之前数据库 二.MySQL数 ...
随机推荐
- 关于如何食用Xcode——用mac的小蒟蒻
前言QwQ 对于一只用Mac的小蒟蒻,没有Dev_c++简直太难受了,用在线IDE写代码又没法保存,那么我们怎么办呢? 好在App Store里有这个好东西 所以我们今天来介绍一下 “如何使用Xcod ...
- Nuget 打包
https://github.com/NuGetPackageExplorer/NuGetPackageExplorer 下载地址 1 打包的dll 中没有依赖 最简单的情况,保证dll放到lib下, ...
- Centos 7 安装 Redis 3.2
环境: Centos 7 GCC #未安装,使用yum install gcc安装 1.下载redis 官方下载网站:https://redis.io/download.请在页面 ...
- git merge 的过程及冲突处理演示
master分支上有一个1.txt文件,进行修改后提交 $ cat 1.txt 1 11 12 $ echo 13 >> 1.txt $ git commit -a -m "mo ...
- dockerfile简述
作用 Dockerfile的内容是一坨可以执行的代码(或者说是指令)(docker的DSL),这些代码使得创建镜像的操作可以复用以及自动化. 指令格式 Dockerfile的指令格式很简单: INST ...
- Grape简介
什么是Grape Grape是Ruby中的一个类REST API框架,被设计用于运行在Rack上或弥补已有的web应用框架(比如Rails或者Sinatra),Grape提供了一个简单的DSL用于方便 ...
- jQuery ajax请求错误返回status 0和错误error的问题
上周发现一个jQuery ajax请求错误返回status 0和错误error的问题,responseText是"error",状态码是0而不是200: $.ajax({ type ...
- Visual Studio 2017 取消 break mode
用 Visual Studio 2017 (以下简称 VS 2017) 运行程序,程序出错后,只是进入中断模式,仅显示 The application is in break mode而没有像 VS ...
- Excelbatis-一个将excel文件读入成实体列表、将实体列表解析成excel文件的ORM框架,简洁易于配置、可扩展性好
欢迎使用Excelbatis! github地址:https://github.com/log4leo/Excelbatis Excelbatis的优点 和spring天然结合,易于接入 xsd支持, ...
- T-SQL 分布式查询
--返回本地服务器中定义的链接服务器列表. EXEC sys.sp_linkedservers /* 创建或更新 SQL Server 本地实例上的登录名与远程服务器中安全帐户之间的映射. 当用户登录 ...