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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩温华 中级黑马   /  2012-11-18 22:39  /  1253 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

while ((streamReader.ReadLine())!= null)//遍历文件的每一行
                                {
                                    string[] strs = streamReader.ReadLine().Split('|');
                                   //将其中的每一行的内容按照“|”的方式进行分割
                                    string Name = strs[0];//第一部分为姓名
                                    string Nickname = strs[1];//第二部分为昵称
                                    using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=true;User Instance=true"))//连接字符串
                                    {
                                        conn.Open();//打开链接
                                        using (SqlCommand cmd = conn.CreateCommand())
                                        {
                                            cmd.CommandText = "insert into T_Mystudent(name,nicknam)  values (@N,@NK)";
                                            cmd.Parameters.Clear();
                                            cmd.Parameters.Add( new SqlParameter("N", Name));
                                            cmd.Parameters.Add ( new SqlParameter("NK", Nickname));
                                            cmd.ExecuteNonQuery();//执行SQL语句查询过程
                                }
                            }
使用 cmd.Parameters.Clear()的原因是什么呢,可以具体解释一下么

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

3 个回复

倒序浏览
cmd.Parameters.Clear()语句确切的说是解除它对其它对象的引用,而不是清除它包含的对象,cmd.Parameters.Clear()解除对象引用后,它之前引用的对象还是存在的。所以无论ExecuteNonQuery被多次执行都不会有异常。
回复 使用道具 举报
王新阳 发表于 2012-11-18 22:58
cmd.Parameters.Clear()语句确切的说是解除它对其它对象的引用,而不是清除它包含的对象,cmd.Parameters.C ...

防止已有Parameters导致sql语句错误,从某种程度上你可以认为和Add方法相对~~~
回复 使用道具 举报
参数不能重复添加,在while中一直用的就是一个sqlcommand,所以往下执行时,要将上一次执行的参数清除掉。cmd.Parameters.Clear();就是这个功能
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马