C#不同数据库连接方式对应的Sql语句的构造
最近在处理不同的数据库的不同的连接方式的时候碰到了一些问题,后来通过查找对应的解决办法都得到了解决,今天抽点时间总结出来于大家分享一下,有不对的地方还希望大家多指正。
C#中连接数据库采用的是ADO.net,具体到数据库的驱动方式又分为ODBC连接和OleDB连接方式,其中针对Sql和Oracle数据库有分别提供了单独的数据库连接方式,对于后两种数据库的连接,虽然也可以采用前面的数据库的连接方式,当相对比起来还是采用专门针对该数据库的连接方式比较高效。
下面我主要总结一下ODBC和Sql以及Oracle驱动连接时,对应的Sql语句构造的差别。
我们在进行数据库的操作时,为了避免Sql注入引起的系统的安全性问题,我们在构造对应的Sql语句的时候都会采用利用Parameter参数进行构造,而非直接拼接对应的Sql语句,然而就是在我们创建和使用对应的参数的时候,不同的数据连接引擎的参数的格式是不相同的。
SqlParameter的构造大家都比较熟悉,在创建SqlParameter时,指定的参数名称为@+对应的列名称,同样在构造Sql语句的时候也是@+对应的列名称,eg:PKID=@PKID;
OracleParameter:在创建对象时的名称是对应的列的名称,如Parameter = new OracleParameter("PKID");不加@符号,而在构造对应的Sql语句的时候采用的方式为 :+对应的列名 eg:updata...where PKID=:PKID;
OdbcParameter:在创建对象时的名称是对应的数据库的列的名称,如Parameter = new OdbcParameter("PKID");也可以为该名称前面添加@符号,而在构造对应的Sql语句时,对于需要该参数的位置都采用?,后面不能添加任何 的信息,否则会出现操作符无效等的错误。 eg:updata...where PKID=? and Name=?;另外对于为对应的command对象添加参数时还要求对应的添加参数的顺序必需和构造出来的Sql语句的参数的顺序相同。
好了,今天第一次写博客就写到这里吧,以后在工作和学习中碰到问题总结下来和大家一块分享,第一次写博客,有什么问题还希望大家都指正,多交流。
浙公网安备 33010602011771号