在ADO.NET中使用参数化SQL语句访问不同数据库时的差异

在ADO.NET中经常需要跟各种数据库打交道,在不实用存储过程的情况下,使用参数化SQL语句一定程度上可以防止SQL注入,同时对一些较难赋值的字段(如在SQL Server中Image字段,在Oracle中Clob字段等)使用参数化SQL语句很容易就能赋值,所以本人经常在ADO.NET中使用参数化SQL语句,近几年来陆续跟SQL Server/Oracle/ MySQL 打交道,积累了一些心得,现在整理出来供大家参考。

表架构如下:

create table Table1 (
   Column1             
varchar(60)          not null,
   Column2             
varchar(60)          not null
   Column3             
int                      not  null default 0
)

使用ado.net参数化查询语句,向Table1中插入一条记录。

MySql:         string sql = "insert into Table1(Column1,Column2,Column3)values(?Column1,?Column2,?Column3)";

Sql Server:  string sql = "insert into Table1(Column1,Column2,Column3)values(@Column1,@Column2,@Column3)";

Oracle:        string sql = "insert into Table1(Column1,Column2,Column3)values(:Column1,:Column2,:Column3)";

posted on 2014-03-08 16:31  明月几时有25  阅读(644)  评论(0编辑  收藏  举报