A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 面朝大海,春暖 中级黑马   /  2013-10-17 12:07  /  1652 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 面朝大海,春暖 于 2013-10-17 16:24 编辑

                 SqlConnection con = new SqlConnection(str)
                 SqlCommand cmd =new SqlCommand(sql,con)
上述代码与下面的代码:
              SqlConnection con = new SqlConnection(str)
                 SqlCommand cmd =con.createcommand()

                cmd.CommandText=sql;
用法上有什么区别??

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 ˋ初°见 于 2013-10-17 12:48 编辑

SqlConnection con = new SqlConnection(str)
SqlCommand cmd =new SqlCommand(sql,con)
先创建一个连接对象con,在创建一个命令对象cmd并且在创建对象时,就把要执行的sql语句和连接对象赋值给cmd对象


上述代码与下面的代码:
              SqlConnection con = new SqlConnection(str)
              SqlCommand cmd =con.createcommand()
              cmd.CommandText=sql;
用法上有什么区别??

先创建一个连接对象con,通过con对象的createcommand方法创建出一个命令对象cmd,并且它的Connection属性为con,然后再把sql语句赋值给cmd对象的CommandText属性


二种方法没啥区别,都是创建出一个Command命令对象,它的Connection属性为con,CommanText属性为sql,先赋值后赋值而已。最方便的是使用这种方法:自动释放和关闭对象省掉了Dispose和Close
using (SqlConnection conn = new SqlConnection(connStr))
{
                using (SqlCommand cmd = new SqlCommand(cmdText, conn))
                {
                           .............
                }
}

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
你用反编译看看CreateCommand的源码
public SqlCommand CreateCommand()
{
    return new SqlCommand(null, this);string cmdText,SqlConnection sqlConnection
}
没有区别

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
没有区别的。

一个是创建的时候当做参数。
一个创建之后设置参数。

基本没什么区别的,如果想看看两个方法里面的东西就用反射看看。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
没有什么区别,一个是创建的时候当做参数,一个创建之后设置参数。仅此而已,实际上都是一样的,换了种写法

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马