今天跟大伙儿聊聊我在捣鼓 Oracle 数据库时,咋用 OracleParameter 这玩意儿的一些事儿。我得连上数据库不是?我就写个连接字符串:
string conStr = "User Id=scott;Password=tiger;Data Source=oracle";
然后,我创建一个 OracleConnection 对象,这才能跟数据库打上交道。
我要干的事儿是从数据库里捞点数据或者改点我寻思着用 OracleParameter 这玩意儿来搞定参数传递的问题。比如说,我要更新一个表里的数据,我就写个 SQL 语句:
string sqlStr = "update sys_case t set * =:CONTENT";
瞧见没,这里头的 :CONTENT
就是个占位符,等着我用 OracleParameter 给它填上真正的值。
1.定义输入参数
- 我先整一个 OracleParameter 对象,给它起个名叫 "CONTENT",然后把我要更新的内容塞进去。
我这人做事儿喜欢琢磨,我就想,这 OracleParameter 到底能干后来我发现,这玩意儿在处理一些复杂查询或者存储过程的时候,还挺有用的。比如说,我要是想根据用户的输入来动态构建查询条件,用 OracleParameter 就能避免 SQL 注入这档子事儿,安全多。
2.注意事项
- 用这玩意儿的时候,我发现一个坑,就是在写 SQL 语句的时候,参数前面得加个冒号 ":",像这样
:CONTENT
。 - 要是在其他地方再提到这个参数,就不用加冒号。
- 然后我也尝试通过查询v$parameter动态性能视图得到参数值。
还有,我有时候还得看看数据库的参数设置,以前我都是用 sys 用户登录,然后敲个 show parameter
就完事儿。但是,我这人就喜欢折腾,我就琢磨着咋让普通用户也能看这些参数。结果你猜咋着?还真让我找到法子,不过这事儿说来话长,咱下次再细聊。
我还试试在 CBD$ROOT 里创建全局用户,这玩意儿还挺有意思,创建的用户名前面都得加个 "c##",而且只能在 CBD$ROOT 里头创建全局用户。看来 Oracle 在用户管理这块儿,规矩还挺多的。
这回捣鼓 OracleParameter,我也算是摸着石头过河,踩不少坑,但也学到不少东西。写下来跟大家分享分享,希望对大伙儿有所帮助。也欢迎大家留言,一起交流交流经验,共同进步嘛