码迷,mamicode.com
首页 > Web开发 > 详细

ADO.NET开发技巧(4)-执行命令进阶

时间:2015-06-01 12:53:34      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

连接池

连接池是微软提供的一种底层优化,如果我们每次执行命令都要创建连接,关闭连接的话,会造成比较大的性能开销。于是微软提供了连接池这一概念,也就是说,我们没使用一次连接,ado.net都会把连接的信息放到连接池中,如果下次还使用这个连接,那么微软则从连接池中把连接信息取出来,避免了创建和释放资源。从而提高了性能。

如果我们想打开连接池,只需要在连接字符串中加入 pooling=true即可

 

语句参数化

我们肯定会要求用户提交参数,并执行查询,而如果用户输入了sql命令,我们又恰巧使用字符串拼接,那么可能会造成不可以预知的后果!所以微软提供了语句参数化来保证用户输入的sql命令不会执行!

我们只要在SqlCommand中做改动即可,具体格式如下:

cmd.CommandText = "select uName from User where uUserID = @UserID and uPassword = @Password";
                        cmd.Parameters.Add(new SqlParameter("UserID","hasfe"));
                        cmd.Parameters.Add(new SqlParameter("Passowrd","asfajfl"));

微软似乎比较钟爱@符号啊,这个其实可以看成一个变量。(如果你用过世界上最好的语言的话,你应该可以到处看到$符号(认真脸

配置文件

配置文件一般是微软每个程序必备的,上面记录了很多程序的配置(这tm不是废话么。。。

OK,配置文件还可以保存连接字符串,格式如下:

<configuration>
  <connectionStrings>
    <add connectionString="data source=BLACKERXHUNTER\SQLEXPRESS;initial catalog=StudyUse;integrated security=True;" name="connectionStr"/>
  </connectionStrings>
</configuration>

调用方式如下:

首先我们在引用那里添加System.Configuration程序集。然后写下这行代码:

conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connctionStr"].ConnectionString;

注意,那个索引中的字符串对应配置文件中的name属性。

执行存储过程

存储过程可以看成一个函数,他保存数据库中。可以接受参数,也可以返回值。(其实不就是函数么

我们首先在数据库中创建存储过程(这个数据数据库的知识,这里不解释

void Proc() {
            using(SqlConnection conn = new SqlConnection("连接字符串")) {
                using(SqlCommand cmd = new SqlCommand(/*这个就是存储过程名字*/"Sum")) {
                    cmd.Connection = conn;

                    //指定类型为存储过程
                    cmd.CommandType = CommandType.StoredProcedure;

                    //指定传入参数和返回参数
                    SqlParameter para1 = new SqlParameter("@left",8);//如果需要传入参数,则传入
                    para1.Direction = ParameterDirection.Input;

                    SqlParameter para2 = new SqlParameter("@right",10);//如果需要传入参数,则传入
                    para2.Direction = ParameterDirection.Input;

                    SqlParameter para3 = new SqlParameter("@output",8);//返回的参数
                    para3.Direction = ParameterDirection.Output;
                    //添加到这里
                    cmd.Parameters.Add(para1);
                    cmd.Parameters.Add(para2);
                    cmd.Parameters.Add(para3);

                    Console.WriteLine(para3.Value);
                }
            }
            
        }

 

第一种SqlCommand方式先到这儿,可以看出,这种方式十分强大,因为他可以直接调用sql语句执行命令,但是也有很多不便。下一次我们接受DataSet和DataAdapter类的方法执行数据库命令。ok,回见~

ADO.NET开发技巧(4)-执行命令进阶

标签:

原文地址:http://www.cnblogs.com/blackerXHunter/p/4543528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!