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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁官林 中级黑马   /  2012-4-21 19:02  /  2791 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 丁官林 于 2012-4-22 06:57 编辑

我是ADO.NET初学者,请大侠帮忙解释一下这两段代码的区别和联系

下面这段是书上的写法:
            string str=@"Data Source=.\SQLEXPRESS;Initial Catalog=myDb;User ID=sa";
            SqlConnection conn = new SqlConnection(str);
            conn.Open();
            String sql = "insert into userInfo values('admin','12345')";
            SqlCommand cmd = new SqlCommand(sql,conn);
            cmd.ExecuteNonQuery();


下面这段:视频里的写法
    string str=@"Data Source=.\SQLEXPRESS;Initial Catalog=myDb;User ID=sa";
            SqlConnection conn = new SqlConnection(str);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "insert into userInfo values('admin','123456')";
            cmd.ExecuteNonQuery();
            

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

7 个回复

倒序浏览
没有任何区别 实现的功能多是一样的 同样的功能可以有很多种的代码实现
不同的是对系统性能的消耗
就这两种写法 在系统性能消耗上几乎没有任何差别 所以你不必纠结。
实现这个同样的功能 起码还有好几种不同的写法
但是归根结底都是 先创建sqlconnection连接通道 创建sqlcommand命了 然后执行!

还有就是你这两种写法都没有写 conn.Close()语句 或dispose() 是极度不规范的!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
实现的功能都是一样,对系统的消耗也没什么不同
回复 使用道具 举报
1   String sql = "insert into userInfo values('admin','12345')";
            SqlCommand cmd = new SqlCommand(sql,conn);



2     SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "insert into userInfo values('admin','123456')";


可否理解为: 1 通过传参数的形式实现SqlCommand 语句 (封装的中用的就是这样的方法)
                 2 直接明了的把需要执行的SqlCommand 语句写出来

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
1.在MSSQL中附加数据库,然后在VS中不需要在连接数据库,只需要写第一段代码即可。
2.若是在VS中直接右键单击创建数据库,那么又应该用第二段代码。
3.两种方式在功能和效率上都是一样的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
没有任何区别,都是创建连接。连接到那个数据库

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
许庭洲 黑马帝 2012-4-26 16:49:55
7#
视频里的写法把CommandText属性设置或返回Command对象的文本。通常该对象为SQL语句,但也可以是提供者识别的任何其他类型的命令语句(如存储的过程调用)。
书上的写法用SqlCommand, SqlCommand包含两个参数,sqlstr和sqlconnection),第一个参数是SQL语句,默认是这样的,第二个是数据库连接对象。
希望以上建议对你有帮助。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
没有什么区别。
有一点有错。
你没有写 conn.Close()语句 或dispose()来释放资源
你的Conn没有关闭的话。数据库Connection一直是打开关态。
这样是绝对不可以的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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